JSF Exception

rmacher

Mitglied
Hallo allerseits

Ich finde gelegentlich solche Meldungen in der log-Datei:

Java:
2014-10-01 13:16:44 ERROR EigenesThemaManagedBean:702 - Fehler beim Erstellen des PDFs
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:389)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:339)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:414)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:402)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97)
	at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
	at ch.hslu.bap.web.pdf.PdfHandler.donwloadPdf(PdfHandler.java:48)
	at ch.hslu.bap.web.beans.thema.eingabe.eigenthema.EigenesThemaManagedBean.createPdf(EigenesThemaManagedBean.java:699)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:245)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:277)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at ch.hslu.bap.web.security.CacheFilterHandler.doFilter(CacheFilterHandler.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at ch.hslu.bap.web.beans.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
	at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
	Suppressed: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
		at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:389)
		at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426)
		at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:338)
		at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:291)
		at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:151)
		at java.io.FilterOutputStream.close(FilterOutputStream.java:160)
		at ch.hslu.bap.web.pdf.PdfHandler.donwloadPdf(PdfHandler.java:52)
		... 45 more
	Caused by: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
		at sun.nio.ch.SocketDispatcher.write0(Native Method)
		at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
		at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
		at sun.nio.ch.IOUtil.write(IOUtil.java:51)
		at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
		at org.apache.tomcat.util.net.SecureNioChannel.flush(SecureNioChannel.java:134)
		at org.apache.tomcat.util.net.SecureNioChannel.write(SecureNioChannel.java:489)
		at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
		at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:173)
		at org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket(InternalNioOutputBuffer.java:139)
		at org.apache.coyote.http11.InternalNioOutputBuffer.flushBuffer(InternalNioOutputBuffer.java:244)
		at org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:189)
		at org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer.java:41)
		at org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:320)
		at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84)
		at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:257)
		at org.apache.coyote.Response.doWrite(Response.java:492)
		at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:384)
		... 51 more
Caused by: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
	at sun.nio.ch.SocketDispatcher.write0(Native Method)
	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
	at sun.nio.ch.IOUtil.write(IOUtil.java:51)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
	at org.apache.tomcat.util.net.SecureNioChannel.flush(SecureNioChannel.java:134)
	at org.apache.tomcat.util.net.SecureNioChannel.write(SecureNioChannel.java:489)
	at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
	at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:173)
	at org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket(InternalNioOutputBuffer.java:139)
	at org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:197)
	at org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer.java:41)
	at org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:320)
	at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84)
	at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:257)
	at org.apache.coyote.Response.doWrite(Response.java:492)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:384)
	... 52 more

Ähnliche Meldungen finde ich auch in der Datei xxxx-stderr.2014-xx-xx.log, allerdings ohne die erste Zeile (hat mit PDF Generierung nichts zu tun)

Eine andere Meldung, die auch in der xxxx-stderr.2014-xx-xx.log ab und zu auftaucht ist die folgende:
Java:
01-Oct-2014 13:16:44.130 INFO [http-nio-8443-exec-2] com.sun.faces.context.ExceptionHandlerImpl.throwIt Exception when handling error trying to reset the response.
 java.lang.IllegalStateException: getOutputStream() has already been called for this response
	at org.apache.catalina.connector.Response.getWriter(Response.java:548)
	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:212)
	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:103)
	at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:834)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.createResponseWriter(FaceletViewHandlingStrategy.java:1169)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:390)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:523)
	at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:417)
	at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:367)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:166)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
	at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

Obwohl die Applikation anschliessend weiterhin problemlos funktioniert, habe ich ein ungutes Gefühl, wenn ich solche Meldungen finde. Meine Fragen ist:

Was könnte der Grund für diese Meldungen sein? Kann es sein, dass der Client den Browser einfach geschlossen hat, ohne sich ordentlich abgemeldet zu haben? Oder, liegt der Grund (wie ich vermute) doch in meinem Code? Bei der ersten Meldung (ist in meiner Log-Datei zweimal zu finden) könnte ich mir vorstellen, dass der Fehler eher von meinem Code kommt, aber bei der zweiten Meldung bin ich im Moment etwas ratlos.

Ich arbeite mit JSF und PrimeFaces 4.0, als ServletContainer wird Tomcat 8.0.9 verwendet.

Vielen Dank.
 
Zuletzt bearbeitet:

Faberix

Mitglied
Hallo,

In den Fehlermeldungen wird dir angezeigt, wo die Exception passiert ist (at und dann der Klassenpfad und ggf. die Linie). Schau doch mal, ob eine dieser Angaben in deinem Code ist, dann weisst du, wo der Fehler ist.

mfg, Faberix
 

BuckRogers

Bekanntes Mitglied
Ich könnte mir vorstellen dass es sich um ein Problem beim Download handelt. Etwas ähnliches kommt mir unter wenn man das PDF runterladen möchte, dann aber im Fenster(speichern oder öffnen), abbricht. Ganz normaler Vorgang, die Applikation läuft weiter, aber im log gibt es eine Exception. In meinem Fall: SocketCloseException.... einfach mal den log laufen lassen und dabei mit PDF rumspielen. Sollte reproduzierbar sein denke ich. ;)

Zeile 11 deines ersten Stacktrace snippet zeigt dass der PDF-Handler eine downloadmethode durchläuft. Es wird wärmer. :D
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben