2013-01-08 9 views
5

मैं उपयोगकर्ता के लिए सकारात्मकता के साथ एक पीडीएफ फ़ाइल दिखाने के लिए iframe का उपयोग कर रहा हूं बचाने के लिए यह, इसे प्रिंट आदि लेकिन जब उपयोगकर्ता वापस या कहीं और नेविगेट करता है इस त्रुटि IST हमेशा फेंक दिया:iframe क्लाइंटएबॉर्ट अपवाद का कारण बनता है: java.io.IOException org.apache.catalina.connector.OutputBuffer.realWriteBytes (आउटपुटबफर.जावा:369)

ClientAbortException: java.io.IOException 
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369) 
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448) 
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:363) 
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392) 
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381) 
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89) 
    at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:296) 
    at com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:277) 
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:119) 
    at org.primefaces.application.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:91) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
    at java.lang.Thread.run(Thread.java:662) 

मैं क्या कर सकता है?

उत्तर

7

ClientAbortException

आम तौर पर, आप बस इसे अनदेखा कर सकते हैं। यह अपवाद तब फेंक दिया जाएगा जब पृष्ठ अभी भी लोड हो रहा है, जबकि क्लाइंट ने HTTP अनुरोध को अचानक रद्द कर दिया है। ऐसा तब होगा जब क्लाइंट ने एएससी दबाया, या जल्दी से नेविगेट किया, या ब्राउज़र बंद कर दिया, या नेटवर्क आउटेज मिला, या यहां तक ​​कि आग लग गई। यह सब आपका नियंत्रण पूरी तरह से बाहर है।

स्टैकट्रेस इंगित करता है कि यह के रूप में <h:outputStylesheet>, <h:outputScript> और <h:graphicImage> (और PrimeFaces समकक्ष) के द्वारा नियंत्रित एक JSF संसाधन अनुरोध है। तो यह तब हो रहा था जब ब्राउज़र एक सीएसएस, जेएस और/या छवि संसाधन डाउनलोड करने की कोशिश कर रहा है।

ठीक है, आपको बस "इसके साथ रहना" है। यदि आप सर्वर लॉग में "शोर" के बारे में परेशान हैं, तो आप servlet filter बनाने पर विचार कर सकते हैं जो उन अपवादों को दबाता है।

try { 
    chain.doFilter(request, response); 
} catch (ClientAbortException e) { 
    // Log a single line instead of whole stacktrace, or just ignore it. 
} 

कृपया ध्यान दें कि यह एक servletcontainer विशेष अपवाद वर्ग (कैटालिना/बिलाव से) है और इस तरह इस तरह के एक फिल्टर इस तरह से तंग विशिष्ट servletcontainer बनाने के लिए मिलकर है (यानी यह ग्लासफिश या दूसरों को पोर्टेबल नहीं है)। चूंकि यह IOException का सबक्लास है, तो आप इसे इसके बजाय पकड़ना चाहेंगे और Class#getSimpleName() चेक कर सकते हैं।

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