बंद करता है मेरे पास एक सर्वलेट है जो लंबे समय से अनुरोध को संसाधित करता है। ऐसा लगता है कि डूपोस्ट के अंदर लूप में सामान रखने के लिए और प्रतिक्रिया के बाहर लेखक के माध्यम से डेटा भेजें। प्रभावी रूप से क्लाइंट ब्राउज़र में लगातार डेटा जोड़ता है। लेकिन जब ग्राहक क्लाइंट को बंद कर देता है तो समस्याएं ठीक होती हैं। टूटे हुए कनेक्शन के के बावजूद servlet में प्रतिक्रिया का लेखक स्ट्रीम कभी बंद नहीं होता है, इस प्रकार सर्वलेट ब्रोकन कनेक्शन, से अनजान है और बिना किसी त्रुटि के लेखक को डंपिंग डेटा रखें। यह कैसे है? और मैं ब्राउज़र डिस्कनेक्ट के मामले में लंबे अनुरोध प्रसंस्करण का पता लगाने और रद्द कैसे करूं?ब्राउज़र लंबे समय तक प्रसंस्करण रद्द करता है जब ब्राउज़र
मैं प्रतिक्रिया लेखक पर चेक एरर() को चाल करना चाहिए, लेकिन यह काम करने के लिए सीम नहीं है। कोई विचार क्यों?
यह सर्वलेट कोड है जो कभी नहीं बंद हो जाता है:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
HttpSession session = request.getSession();
System.out.println("Session " + session.getId() + " started");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
while (!out.checkError())
{
try
{
Thread.sleep(1000);
} catch (InterruptedException ex)
{
ex.printStackTrace();
}
Date date = new Date();
// TODO append output to the client browser here
out.println(".....");
System.out.println("Session " + session.getId() + "data sent at: " + date);
out.flush();
//break; // _TEST
}
} finally
{
System.out.println("Session " + session.getId() + " finished");
out.close();
}
}
धन्यवाद,
माइक
ऐसा लगता है कि आप सही हैं। मुझे क्लाइंट पक्ष से एसीके भेजने के लिए कुछ मैकेनिज्म होना होगा ताकि यह इंगित किया जा सके कि सर्वर को डेटा भेजना चाहिए। यह दुर्भाग्यपूर्ण और अजीब है क्योंकि http टीसीपी का उपयोग करता है और इस प्रकार कनेक्शन-जागरूक होने का अनुमान लगाता है। – Ma99uS
यह टीसीपी के रूप में HTTP का वर्णन करने के लिए एक गलत नाम है। निश्चित रूप से HTTP प्रोटोकॉल है लेकिन वेब नहीं है (जरूरी)। यूआईडीपी पर सामग्री संचार और वितरित करने वाले स्क्विड कैश पर विचार करें। साथ ही आपका वेब ऐप सामग्री वितरित कर सकता है, कनेक्शन बंद कर सकता है और प्रॉक्सी ब्राउज़र से कनेक्ट हो जाता है। – cletus
क्या इसका मतलब यह है कि यदि आपने वेब ब्राउज़र के माध्यम से बड़ी फ़ाइल डाउनलोड करना शुरू किया है, और आप इसे बंद करने से पहले। सर्वर अभी भी आपको ट्रैफिक या/और सर्वर संसाधनों का उपयोग करके पूरी फाइल भेज देगा? – Ma99uS