2013-01-08 25 views
5

でifiorameを使用しています。私はPDFファイルを表示するためにiframeを使用しています。それを保存し、それを印刷、などしかし、ユーザーは、背中や他の場所で常にスローこのエラーイストをナビゲートするとき:iframeが原因でClientAbortExceptionが発生する:org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java: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要求を中断した場合にスローされます。これは、クライアントがEscを押したとき、または急いでナビゲートしたり、ブラウザを閉じたり、ネットワークが停止したり、火災が発生した場合に発生します。このすべてがあなたのコントロールから完全に外れています。

stacktraceは、<h:outputStylesheet><h:outputScript>および<h:graphicImage>(およびPrimeFacesに相当するもの)によって処理されるJSFリソース要求であることを示します。これは、ブラウザがCSS、JS、および/またはイメージリソースをダウンロードしようとしている間に起こっていました。

まあ、あなたは "それと一緒に"生きている。サーバーログの「ノイズ」について気にするならば、それらの例外を抑制するservlet filterを作成することを検討することができます。

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

これは(カタリナ/ Tomcatのから)servletcontainer固有の例外クラスであり、したがって、そのようなフィルタは(すなわち、それはGlassfishのか、他の人にポータブルではありません)タイト特定servletcontainerメイクに結合され、この方法であることに注意してください。 IOExceptionのサブクラスなので、代わりにキャッチしてClass#getSimpleName()のチェックをしてください。