2010-01-06 18 views
6

मैं लगातार मेरी weblogic 10.3 कंसोल लॉगक्या नुकसान java.lang.IllegalStateException के कारण होता है: प्रतिक्रिया पहले से ही प्रतिबद्ध

java.lang.IllegalStateException: Response already committed 
at weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java: 
1462) 
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:601) 
at org.apache.struts.action.RequestProcessor.processMapping(RequestProcessor.java:658) 
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:193) 
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) 

छंटनी की गई पर त्रुटि नीचे मिलता है। पूरा स्टैकट्रेस

के लिए लॉग फ़ाइल देखें

मैं सोच रहा था क्या नुकसान इस के कारण होता है, तो unfixed छोड़ दिया? टीम में शामिल होने से पहले यह त्रुटि मेरे ऐप में रही है, क्या यह "तत्काल सुधार की आवश्यकता" के रूप में अर्हता प्राप्त करने के लिए पर्याप्त गंभीर है?

उत्तर

10

स्ट्रूट ओपन सोर्स है। बस RequestProcessor स्रोत से पहले जाँच (के रूप में स्टैकट्रेस में बताया गया है) 658 लाइन: No mapping can be found to process this request:

// No mapping can be found to process this request 
String msg = getInternal().getMessage("processInvalid", path); 
log.error(msg); 
response.sendError(HttpServletResponse.SC_NOT_FOUND, msg); 

टिप्पणी देखें। यह समस्या का मूल कारण है। लेकिन sendError() एक त्रुटि संदेश प्रदर्शित करने के लिए कॉल भी पूरा नहीं किया जा सकता है, क्योंकि प्रतिक्रिया पहले से ही प्रतिबद्ध है। स्पष्ट रूप से दो चीजें विफल हैं: मैपिंग गायब है और स्ट्रैट्स मैपिंग का डिफ़ॉल्ट काम गलत तरीके से प्रोग्रामेटिक रूप से लिया गया है।

+0

(+1) लाइब्रेरीज़ स्रोत कोड को देखकर मेरी राय में ढांचे-निर्भर मुद्दों को जल्दी से डीबग करने का सबसे अच्छा तरीका है। – Bozho

0

इसका मतलब है कि आवेदन के बाद प्रतिक्रिया भेज दिया गया है एक HTTP शीर्ष लेख भेजने की कोशिश की। यह किस प्रकार का नुकसान एप्लिकेशन पर निर्भर करता है।

अधिकांश समय एक लापता HTTP शीर्षलेख ब्राउज़र द्वारा बर्दाश्त किया जा सकता है, उदाहरण के लिए, यदि आप एक विशेष Content-Type निर्दिष्ट करना चाहते हैं तो यह समस्या का कुछ हो सकता है।

फिर भी मैं तुम्हें समस्या के मूल कारणों का पता लगाने के लिए किसी भी भ्रामक या "अजीब" परिणाम से बचने के लिए सुझाव देते हैं।

0

यह निर्भर करता है कि त्रुटि का अर्थ यह है कि आपने अपने HttpResponse ऑब्जेक्ट को लिखा है और प्रतिक्रिया भेजना शुरू किया है (फ्लश(), sendError() या sendRedirect() को कॉल करके) संभावित रूप से प्रतिक्रिया स्ट्रीम में कोई भी अतिरिक्त (या हेडर इत्यादि) या वास्तव में बाद की कार्रवाई (उदाहरण के लिए, आपने फ्लश() कहा है और अब आप sendError() को कॉल कर रहे हैं) अनुरोध किया जाएगा।

+0

मेरी अनुभवहीनता को क्षमा करें लेकिन मुझे यह स्पष्ट रूप से नहीं मिल रहा है। हमारे स्ट्रैट्स ऐप में कुछ डिस्पैचएक्शन क्लास है जहां उचित व्यवसाय डिलीगेटर्स को क्लैलिंग करके व्यवसाय तर्क निष्पादित किया जाता है, एक बार सबकुछ ठीक हो जाता है, विधि को कॉल करने के द्वारा विधिवत कार्यवाही देता है। क्या आप यहाँ एक समस्या देखते हैं ..? –

+1

जब तक कि आपका व्यवसाय तर्क आपके प्रतिक्रिया ऑब्जेक्ट पर संदेश भेजता है। मैं स्ट्रैट्स से विशेष रूप से परिचित नहीं हूं इसलिए मैं वास्तव में उस स्तर पर एक बुद्धिमान प्रतिक्रिया नहीं दे सकता, मैं बस इतना कह सकता हूं कि मूल सर्लेट के साथ मेरे अनुभव में मैंने प्रतिक्रिया त्रुटि को "एक बार" से अधिक बार "त्रुटि" करके देखा है। क्षमा करें मैं और अधिक मदद नहीं कर सकता। –

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