javax.net.ssl.SSLException error

I'm getting the following error on Apache Tomcat/4.1.24 (Java version is 1.4.2_11-b06). Can anyone shed some light on what may be the cause of this error?

2007-05-01 12:20:11 StandardWrapperValve[default]: Servlet.service() for servlet default threw exception

javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Broken pipe

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.d(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.e(DashoA12275)

at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA12275)

at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:668)

at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:160)

at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:523)

at org.apache.coyote.Response.doWrite(Response.java:524)

at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBuffer.java:384)

at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:439)

at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:359)

at org.apache.coyote.tomcat4.OutputBuffer.writeBytes(OutputBuffer.java:411)

at org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:398)

at org.apache.coyote.tomcat4.CoyoteOutputStream.write(CoyoteOutputStream.java:110)

at org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:1996)

at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1745)

at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:1073)

at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:506)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)

at java.lang.Thread.run(Thread.java:534)

Caused by: javax.net.ssl.SSLException: java.net.SocketException: Broken pipe

at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA12275)

at org.apache.coyote.http11.InternalOutputBuffer.commit(InternalOutputBuffer.java:545)

at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:662)

at org.apache.coyote.Response.action(Response.java:220)

at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:516)

... 46 more

Caused by: java.net.SocketException: Broken pipe

at java.net.SocketOutputStream.socketWrite0(Native Method)

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at com.sun.net.ssl.internal.ssl.OutputRecord.a(DashoA12275)

... 52 more

[6273 byte] By [BillLea] at [2007-11-27 2:54:55]
# 1
Somehow the client is closing its socket directly, i.e. not via SSLSocket, before the servlet has finished writing. Is the client a browser? or does it have a plain socket wrapped in an SSLSocket and if so does it close the plain socket - if so, don't.
ejpa at 2007-7-12 3:31:11 > top of Java-index,Security,Other Security APIs, Tools, and Issues...