2012-02-09 23 views
5

पर लिखते समय फेंक दिया जाता है I ग्रहण आरएपी (रिच अजाक्स प्लेटफार्म 1.3.2) और जावा संस्करण 1.5 के भीतर जेट्टी 6.1.23 का उपयोग कर रहा हूं। मैं ब्राउज़र में एक पीएनजी छवि भेज रहा हूँ।org.mortbay.jetty.EofException को

सर्वर साइड:

response.setContentType(application.getMimeType(".png")); 
response.setContentLength(outputSize); 
response.setHeader("Cache-Control", "no-cache"); 
response.setDateHeader("Expires", 0); 
response.setHeader("Pragma", "no-cache"); 
response.setDateHeader("Max-Age", 0); 
ServletOutputStream servletoutputstream = response.getOutputStream(); 

servletoutputstream.write(imageBytes); // this throws EofException 

servletoutputstream.flush(); 

ग्राहक के पक्ष: ये है कि मुसीबत खड़ी कर रहे हैं कोड के टुकड़े हैं

<img src="path to the servlet that is loading the image"> 

बात यह है कि कि इस समस्या को हर समय नहीं होता है अजीब है। उत्पादन में चले जाने के बाद यह अंतःक्रियात्मक होता है। हमारे परीक्षण पर्यावरण में कोई समस्या नहीं थी। उत्पादन और हमारे परीक्षण पर्यावरण के बीच एकमात्र अंतर यह है कि उत्पादन वातावरण में, उपयोगकर्ता हमारे सर्वर से बहुत दूर हैं, जबकि परीक्षण पर्यावरण में, वे बहुत करीब हैं।

जब अपवाद फेंक दिया जाता है, तो छवि क्लाइंट के ब्राउज़र अंत में बिल्कुल प्रदर्शित नहीं होती है! क्या हो रहा है? इसे ठीक करने के लिए मैं क्या कर सकता हूं या कम से कम एक कामकाज कर सकता हूं?

यह पूर्ण अपवाद निशान है (मैं कुंजी अपवाद हाइलाइट किया गया):

08 Feb 2012 11:49:08,955 ERROR [[email protected]] plugin.sda - 
org.mortbay.jetty.EofException 
    at org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:789) 
    at org.mortbay.jetty.AbstractGenerator$Output.flush(AbstractGenerator.java:568) 
    at org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:1006) 
    at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:650) 
    at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:590) 
    at com.scotiabank.ebss.common.viewer.util.ViewerUtil.sendBytes(ViewerUtil.java:533) 
    at com.scotiabank.ebss.common.viewer.servlets.ViewerServlet.doGet(ViewerServlet.java:242) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.service(ServletManager.java:180) 
    at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) 
    at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:126) 
    at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:318) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:924) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: java.io.IOException: Broken pipe 
    at sun.nio.ch.FileDispatcher.writev0(Native Method) 
    at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:61) 
    at sun.nio.ch.IOUtil.write(IOUtil.java:192) 
    at sun.nio.ch.SocketChannelImpl.write0(SocketChannelImpl.java:393) 
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:416) 
    at java.nio.channels.SocketChannel.write(SocketChannel.java:375) 
    at org.mortbay.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:232) 
    at org.mortbay.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:211) 
    at org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:712) 
    ... 27 more 
+0

अपवाद निरक्षर है। वास्तविक समस्या 'टूटी हुई पाइप' है, जिसमें ईओएफ के साथ कुछ भी करने का कोई अधिकार नहीं है। – EJP

उत्तर

2

समस्या नेटवर्क से संबंधित प्रतीत होता है, और बहुत कम-से-कुछ भी नहीं जेट्टी से कोई लेना देना।

आप नेटवर्क सॉकेट में डेटा की मात्रा लिखने का प्रयास कर रहे हैं जो दूसरे छोर पर बंद कर दिया गया है। Broken pipe अपवाद का अर्थ यही है।

आपको यह पता लगाने की आवश्यकता है कि HTTP कनेक्शन अप्रत्याशित रूप से क्यों बंद हो रहा है। यह संभव है कि कारण जेटी के साथ कुछ करने के लिए है, लेकिन मुझे दृढ़ता से संदेह नहीं है।

1

अनुरोध/प्रतिक्रिया आकार सीमाएं जांचें। छोटी छवि < 4k डाउनलोड करने का प्रयास करें।