2011-10-21 9 views
13

एक मुद्दा यह question को सूचना दी के बाद, एक समाधान मिला था:कैसे अनुरोध सेट = ASYNC_SUPPORTED बिलाव 7 पर async सर्वलेट 3.0 प्रसंस्करण सक्षम करने के लिए सही से बचने के लिए?

req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true); 

यह थोड़ा अजीब लगता है और वास्तव में 'पोर्टेबल' कोड नहीं है (यह चोट नहीं होगा, लेकिन ...)। यह टॉमकैट 7 के लिए विशिष्ट लगता है। मैं नेटबीन 7.0.1 द्वारा वितरित के रूप में टोमकैट 7.0.14 का उपयोग कर रहा हूं।

मैं प्रलेखन का संकेत है कि यह एक Catalina विशेषता के साथ सर्वलेट 3.0 में async अनुरोध प्रसंस्करण सक्षम करने के लिए आवश्यक है नहीं पा सके। मुझे दस्तावेज नहीं मिल सका जो कि टॉमकैट कॉन्फ़िगरेशन स्तर पर कुछ विशेष आवश्यक था।

क्या टॉमकैट 7 में एसिंक सर्वलेट 3.0 प्रोसेसिंग को सक्षम करने के लिए प्रत्येक अनुरोध में ASYNC_SUPPORTED=true सेट करने से बचने का कोई तरीका है?

+0

बिलाव 7.0.27 'req.startAsync()' या 'req.startAsync में (अनुरोध, रिज़ोल्यूशन)' त्रुटियों और अतिरिक्त सेटिंग्स के बिना काम करता है। – user1516873

उत्तर

7

योग्य कुछ बातें पहले जाँच करने के लिए:

यकीन है कि किन्हीं भी फ़िल्टर अनुरोध पर कार्य करते हैं (सवाल आप संदर्भित करने के लिए one of the answers में संबोधित के रूप में) भी async का समर्थन करें।

सुनिश्चित करें कि आप एक सर्वलेट 3.0 web.xml उपयोग कर रहे हैं - उदाहरण के लिए:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0" 
     metadata-complete="true"> 
4

कोशिश उन्नयन।

  • Bug 53623 7.0.30 में तय की।
  • "सर्वलेट 3 अतुल्यकालिक प्रसंस्करण समर्थन के लिए शेष वाल्व सक्षम करें।" (7.0.16 में तय) पूर्ण विवरण के लिए

चेक Tomcat 7 ChangeLog

इसके अलावा, यदि आप एसिंक का उपयोग करना चाहते हैं, तो आपको यह सुनिश्चित करना होगा कि चेन में सभी फ़िल्टर और वाल्व (साथ ही साथ सर्वलेट, सभी) async का समर्थन करते हैं। यह संभवतः मूल प्रश्न में समस्या के साथ-साथ आपके मामले के साथ भी समस्या है।

+0

कोई स्पष्टीकरण के साथ डाउनवोट? :/ –

+0

मैं टोमकैट 7.0.34 का उपयोग कर रहा हूं, web.xml में सर्वलेट संस्करण वास्तव में 3.0 है और सबकुछ एसिंक सक्षम होना चाहिए (क्योंकि यह जेटी के साथ काम कर रहा है) – Eugen

+0

@ यूजीन जेट्टी थोड़ा अलग तरीके से व्याख्या कर सकता है। "यह जेटी में काम करता है" एक रॉक-ठोस तर्क नहीं है कि टोमकैट में एक बग है। हालिया बग फिक्स के संदर्भ के लिए –

1

मुझे पता चला कि org.apache.catalina.ASYNC_SUPPORTED=true केवल तभी जरूरी है जब आप एक सामान्य-सर्वलेट/जेएसपी (आंतरिक रूप से) एक एसिंक-सर्वलेट तक आगे बढ़ें! उदाहरण: मेरी index.jsp में, मैं एम्बेड <jsp:forward page="/path/AsyncServlet" /> मैं वादा करता हूँ AsyncServlet दोनों Tomcat7 और Glassfish3 पर ठीक काम करता है, जब मैं इसे सीधे ब्राउज़र से गति प्रदान! लेकिन जब मैं इसे index.jsp द्वारा ट्रिगर किया: Tomcat7 500 "समर्थित नहीं" Glassfish3 के लिए रिपोर्ट 500 अगर मैं <jsp:forward> से पहले <% request.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true); %> एम्बेड "अनुरोध एक फिल्टर या सर्वलेट कि अतुल्यकालिक संचालन का समर्थन नहीं करता के दायरे के भीतर है" के लिए रिपोर्ट index.jsp में, टॉमकैट 7 ठीक हो जाता है, लेकिन ग्लासफ़िश 3 अभी भी खराब है! इसलिए मैं दोनों Tomcat7 और Glassfish3 के लिए एक समाधान पाया (SYNC_SUPPORTED बिना!):

<servlet> 
    <servlet-name>indexPage</servlet-name> 
    <jsp-file>/index.jsp</jsp-file> 
    <async-supported>true</async-supported> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>indexPage</servlet-name> 
    <url-pattern>/index.jsp</url-pattern> 
    </servlet-mapping> 

निष्कर्ष (मेरे लिए): बस बिल्कुल web.xml में निम्नलिखित देते आप नहीं कर सकते हैं आगे एक सामान्य-सर्वलेट से/jsp/फ़िल्टर को async-one! चूंकि async-request सुविधा प्रीसेट होना चाहिए! तो जो एक async-सर्वलेट को अग्रेषित करने के लिए की जरूरत है एक सर्वलेट/jsp/फिल्टर के लिए आम समाधान है: उपयोग <servlet>/<async-supported>true हैं या पहले से संसाधित सर्वलेट के लिए @WebServlet(asyncSupported = true); एक पूर्व संसाधित jsp के लिए उपयोग <servlet>/<async-supported>true उपयोग <filter>/<async-supported>true या @WebFilter(asyncSupported = true) एक पूर्व संसाधित फिल्टर के लिए; उम्मीद है कि यह थोड़ा सा मदद कर सकता है!

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