iframe вызывает ClientAbortException: java.io.IOException в org.apache.catalina.connector.OutputBuffer.realWriteBytes (OutputBuffer.java:369)

m используя iframe для показа pdf-файла, с возможностью для пользователя сохранить его, распечатать его и т. д. Но когда пользователь переходит назад или куда-либо еще, эта ошибка всегда выдается:

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)

Что я могу сделать?

Ответы на вопрос(1)

ClientAbortException

Как правило, вы можете просто игнорировать это. Это исключение будет вызвано, когда клиент внезапно прервал HTTP-запрос, пока страница все еще загружается. Это произойдет, когда клиент нажалEscили поспешно ушел, или закрыл браузер, или отключился от сети, или даже загорелся. Все это полностью вне вашего контроля.

Трассировка стека указывает на то, чтоs запрос ресурса JSF, обработанный а также (и эквиваленты PrimeFaces). Так что это происходило, когда браузер пытается загрузить ресурс CSS, JS и / или изображения.

Хорошо ты'мы просто "живи с этим", Если вы беспокоитесь о "шум" в журналах сервера, вы можете рассмотреть возможность созданияфильтр сервлетов который подавляет эти исключения.

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

Обратите внимание, что это класс исключений для сервлет-контейнера (от Catalina / Tomcat), и, таким образом, такой фильтр тесно связан с конкретной маркой сервлет-контейнера (то есть it ').не переносится на Glassfish или другие). Как это'подклассIOException, вы можете поймать его и сделатьClass#getSimpleName() проверять.

Ваш ответ на вопрос