2012-03-29 7 views
30
<servlet> 
     <description>xxx</description> 
     <servlet-name>xxx</servlet-name> 
     <servlet-class>com.xxx.yyy</servlet-class> 
     <async-supported>true</async-supported> 
</servlet> 

servlet की web.xml कॉन्फ़िगरेशन फ़ाइल में async-supported का उद्देश्य क्या है? क्या मामला मैं में इसका इस्तेमाल कर सकते हैं?web.xml में async-समर्थित का उद्देश्य क्या है?

+2

यह सर्वलेट 3.0 के लिए जोड़ा गया विशेषताएं है, देखें: https://blogs.oracle.com/enterprisetechtips/entry/asynchronous_support_in_servlet_3 –

उत्तर

41

विडंबना यह है कि मैं कैसे बिल्ला के web.xml में इस संपत्ति लिखने के लिए की वाक्य रचना के लिए देख रहा था और यह पहली खोज आइटम मैं गूगल से खोला है - यह सही ढंग से भी लिखा है (यह काम करता है), इसलिए धन्यवाद।

हालांकि आपके प्रश्न का उत्तर करने के लिए, इस सर्वलेट बाद में प्रतिक्रिया के लिए आने वाले अनुरोधों को स्टोर करने के लिए अनुमति देता है। यह अनुरोध इसलिए इसे कहीं और इस्तेमाल किया जा सकता जब तक सर्वर प्रतिक्रिया भेजने के लिए तैयार है संभाल करने के लिए इस्तेमाल किया धागा मिल जाता है।

व्यावहारिक प्रयोजनों के लिए, इस विन्यास के साथ आप सेट अप कर सकते हैं एक सर्वलेट कि होगा (प्रभाव में) ग्राहक के लिए push डेटा (क्लाइंट सर्वर को प्रारंभिक अनुरोध भेजे जाने के बाद)।

यह तकनीक किसी क्लाइंट से अनावश्यक समय के अनुरोधों की आवश्यकता को प्रतिस्थापित करने के लिए अनिश्चित अंतराल पर बदल सकती है। और यह धागा पर फांसी नहीं द्वारा एक स्केलेबल ढंग से होता है।


कुछ उदाहरण उपयोग-मामले में शामिल हैं:

चैट अनुप्रयोगों, जब एक ग्राहक प्रकार संदेश आप इसे तुरन्त अन्य ग्राहक के लिए प्रकट करना चाहते हैं।

ईमेल ऐप्स, ग्राहकों को ई-मेल सर्वर द्वारा प्राप्त होने के तुरंत बाद ई-मेल देखने की अनुमति देने के लिए।

मैंने ऑटोमेशन कार्यों के लिए प्रोग्रामिंग लॉजिक कंट्रोलर से ब्राउज़र में इनपुट परिवर्तन अपडेट भेजने के लिए भी इसका उपयोग किया है।

Here's इस पर एक अच्छा ट्यूटोरियल। This भी जावा में कुछ नट और बोल्ट को शामिल किया गया।

+0

यह ग्लासफ़िश 4.1 –

+4

के लिए भी सही है नोट: यदि आपके एसिंक अनुरोध में मैप किए गए कोई फ़िल्टर हैं तो उनमें से प्रत्येक को अपने '' अनुभाग में ' true' की भी आवश्यकता है – TMG

0

आप ग्लासफिश 4.1 का उपयोग कर कर रहे हैं तो, इस src/मुख्य/webapp/web.xml में प्रयास करें:

<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <load-on-startup>1</load-on-startup> 
    <async-supported>true</async-supported> 
</servlet> 
<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
2

मुख्य उद्देश्य WebSockets करने के लिए एक तंत्र के रूप में वापस आने एक्सएचआर स्ट्रीमिंग सक्षम बनाना है। Async समर्थन एक सर्वलेट पर सक्षम होने चाहिए ....

यहाँ गहराई से जानकारी की जांच में अधिक जानकारी के लिए (सर्वलेट 3: स्पष्ट रूप से सही करने के लिए कॉन्फ़िगर नहीं है, तो आपके आवेदन एक्सएचआर स्ट्रीमिंग का जो java.lang.IllegalArgumentException को बढ़ावा मिलेगा पर वापस आने नहीं कर सकते async अनुरोध):
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

आदेश में सत्यापित करें कि आपके विन्यास को सही ढंग से लागू किया जाता है 1 करने के लिए आपके ब्राउज़र में wesocket कनेक्शन की संख्या को सीमित और अधिक से अधिक 1 टैब में अपने आवेदन को खोलने के लिए। यदि कॉन्फ़िगरेशन लागू किया गया है तो आपके पास टैब 1 में स्थापित वेबस्केट कनेक्शन और टैब 2 में एचएक्सआर स्ट्रीमिंग होगा।

संबंधित मुद्दे