I'm seeing something very similar on my system where we are running
Tomcat 3.3. We basically got a URL object connection to our own server,
and for some reason the URL class seems to do an unclean shutdown of the
socket which results in socket write errors on the server.

I don't understand why these errors gets reported to the logs, I would
assume that a web server must expect clients to behave badly and
disconnect without warning.

I've learned to live with it rather than trying to fix it, but then
again I'm on 3.3 you are on 4.1 and we might see different problems.

Martin



> -----Original Message-----
> From: Greg Strobl [mailto:[EMAIL PROTECTED]] 
> Sent: 12 December 2002 14:38
> To: '[EMAIL PROTECTED]'
> Subject: Problem with Socket closing
> 
> 
> Hi,
> 
> Tomcat 4.1.12
> OS: W2K
> JRE: Sun 1.4.1_01  (Originally found using 1.4.0)
> 
> I am seeing a problem with Tomcat closing a socket connection 
> and having a write error. This happens with both SSL and 
> regular sockets (the log example that is at the end show an 
> SSL example.) I can reproduce the problem at times but 
> sometimes that test case works (and the page renders as it
> should.) Our website sits on top of a data warehouse and I 
> mostly experience the problem with the pages that have the 
> longer queries. 
> 
> Does anybody know why this happens? Is there a fix? What can 
> I do to try figure out what is causing the problem? I have 
> turned up the debugging level on Tomcat (to 1) and that 
> didn't produce much more information. I have added
> (println) statements to my code to see if there is a problem 
> in it. It appears that my code always completes even when the 
> socket connection is broken.
> 
> Basically, I am at a point where I don't know what to try next.
> 
> Here is the log output:
> 
> 2002-12-11 17:07:28 ApplicationDispatcher[] Servlet.service() 
> for servlet jsp threw exception
> org.apache.jasper.JasperException: Connection has been shutdown:
> javax.net.ssl.SSLException: java.net.SocketException: 
> Software caused connection abort: socket write error
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> Wrapper.java:2
> 48)
>       at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:289)
>       at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(Applicat
> ionDispatcher.
> java:684)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(Appli
> cationDispatch
> er.java:432)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.forward(Applica
> tionDispatcher
> .java:356)
>       at
> org.apache.jasper.runtime.PageContextImpl.forward(PageContextI
> mpl.java:427)
>       at org.apache.jsp.page_jsp._jspService(page_jsp.java:100)
>       at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> Wrapper.java:2
> 04)
>       at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:289)
>       at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(Applicat
> ionDispatcher.
> java:684)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(Appli
> cationDispatch
> er.java:432)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.forward(Applica
> tionDispatcher
> .java:356)
>       at
> org.apache.jasper.runtime.PageContextImpl.forward(PageContextI
> mpl.java:427)
>       at org.apache.jsp.page_jsp._jspService(page_jsp.java:116)
>       at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> Wrapper.java:2
> 04)
>       at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:289)
>       at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(Application
> FilterChain.java:247)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterCh
> ain.java:193)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.ja
> va:260)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.ja
> va:191)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.valves.CertificatesValve.invoke(Certificat
> esValve.java:2
> 46)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:641)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
> org.apache.catalina.core.StandardContext.invoke(StandardContex
> t.java:2396)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:180
> )
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi
> spatcherValve.
> java:170)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:641)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:172
> )
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:641)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java
> :174)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.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(Http11Process
> or.java:405)
>       at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
> r.processConne
> ction(Http11Protocol.java:380)
>       at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
> nt.java:508)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.jav
> a:533)
>       at java.lang.Thread.run(Thread.java:536)
> ----- Root Cause -----
> javax.net.ssl.SSLException: Connection has been shutdown:
> javax.net.ssl.SSLException: java.net.SocketException: 
> Software caused connection abort: socket write error
>       at com.sun.net.ssl.internal.ssl.SSLSocketImpl.d(DashoA6275)
>       at com.sun.net.ssl.internal.ssl.SSLSocketImpl.e(DashoA6275)
>       at 
> com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA6275)
>       at 
> org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutp
> utBuffer.doWri
> te(InternalOutputBuffer.java:652)
>       at 
> org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(C
> hunkedOutputFi
> lter.java:166)
>       at 
> org.apache.coyote.http11.InternalOutputBuffer.doWrite(Internal
> OutputBuffer.j
> ava:523)
>       at org.apache.coyote.Response.doWrite(Response.java:513)
>       at
> org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBu
> ffer.java:380)
>       at
> org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:360)
>       at 
> org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:338)
>       at
> org.apache.tomcat.util.buf.IntermediateOutputStream.write(C2BC
> onverter.java:
> 273)
>       at
> sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:334)
>       at
> sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncod
er.java:402)
>       at
> sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:406)
>       at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:150)
>       at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
>       at
> org.apache.tomcat.util.buf.WriteConvertor.flush(C2BConverter.java:222)
>       at
> org.apache.tomcat.util.buf.C2BConverter.flushBuffer(C2BConvert
> er.java:165)
>       at
> org.apache.coyote.tomcat4.OutputBuffer.realWriteChars(OutputBu
> ffer.java:576)
>       at
> org.apache.tomcat.util.buf.CharChunk.flushBuffer(CharChunk.java:388)
>       at
> org.apache.coyote.tomcat4.OutputBuffer.flush(OutputBuffer.java:340)
>       at 
> org.apache.coyote.tomcat4.CoyoteResponse.flushBuffer(CoyoteRes
> ponse.java:554
> )
>       at 
> org.apache.coyote.tomcat4.CoyoteResponseFacade.flushBuffer(Coy
> oteResponseFac
> ade.java:227)
>       at
> org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:211)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntime
> Library.java:8
> 08)
>       at
> org.apache.jasper.runtime.PageContextImpl.include(PageContextI
> mpl.java:395)
>       at 
> org.apache.jasper.runtime.PageContextImpl.handlePageException(
> PageContextImp
> l.java:480)
>       at 
> org.apache.jsp.MakePage_jsp._jspService(MakePage_jsp.java:468)
>       at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> Wrapper.java:2
> 04)
>       at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:289)
>       at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(Applicat
> ionDispatcher.
> java:684)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(Appli
> cationDispatch
> er.java:432)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.forward(Applica
> tionDispatcher
> .java:356)
>       at
> org.apache.jasper.runtime.PageContextImpl.forward(PageContextI
> mpl.java:427)
>       at org.apache.jsp.page_jsp._jspService(page_jsp.java:100)
>       at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> Wrapper.java:2
> 04)
>       at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:289)
>       at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(Applicat
> ionDispatcher.
> java:684)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doForward(Appli
> cationDispatch
> er.java:432)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.forward(Applica
> tionDispatcher
> .java:356)
>       at
> org.apache.jasper.runtime.PageContextImpl.forward(PageContextI
> mpl.java:427)
>       at org.apache.jsp.page_jsp._jspService(page_jsp.java:116)
>       at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> Wrapper.java:2
> 04)
>       at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> .java:289)
>       at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(Application
> FilterChain.java:247)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterCh
> ain.java:193)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.ja
> va:260)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.ja
> va:191)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.valves.CertificatesValve.invoke(Certificat
> esValve.java:2
> 46)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:641)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
> org.apache.catalina.core.StandardContext.invoke(StandardContex
> t.java:2396)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:180
> )
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi
> spatcherValve.
> java:170)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:641)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:172
> )
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:641)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java
> :174)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invok
> eNext(StandardPipeline.java:643)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.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(Http11Process
> or.java:405)
>       at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
> r.processConne
> ction(Http11Protocol.java:380)
>       at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
> nt.java:508)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.jav
> a:533)
>       at java.lang.Thread.run(Thread.java:536)
> Caused by: javax.net.ssl.SSLException: 
> java.net.SocketException: Software caused connection abort: 
> socket write error
>       at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.a(DashoA6275)
>       at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
>       at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
>       at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
>       at 
> com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA6275)
>       at 
> org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutp
> utBuffer.doWri
> te(InternalOutputBuffer.java:652)
>       at 
> org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(C
> hunkedOutputFi
> lter.java:171)
>       at 
> org.apache.coyote.http11.InternalOutputBuffer.doWrite(Internal
> OutputBuffer.j
> ava:523)
>       at org.apache.coyote.Response.doWrite(Response.java:513)
>       at
> org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBu
> ffer.java:380)
>       at
> org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:360)
>       at 
> org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:338)
>       at
> org.apache.tomcat.util.buf.IntermediateOutputStream.write(C2BC
> onverter.java:
> 273)
>       at
> sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:334)
>       at
> sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncod
er.java:402)
>       at
> sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:406)
>       at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:150)
>       at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
>       at
> org.apache.tomcat.util.buf.WriteConvertor.flush(C2BConverter.java:222)
>       at
> org.apache.tomcat.util.buf.C2BConverter.flushBuffer(C2BConvert
> er.java:165)
>       at
> org.apache.coyote.tomcat4.OutputBuffer.realWriteChars(OutputBu
> ffer.java:576)
>       at
> org.apache.tomcat.util.buf.CharChunk.flushBuffer(CharChunk.java:388)
>       at
> org.apache.coyote.tomcat4.OutputBuffer.flush(OutputBuffer.java:340)
>       at java.io.PrintWriter.flush(PrintWriter.java:120)
>       at
> org.apache.coyote.tomcat4.CoyoteWriter.flush(CoyoteWriter.java:97)
>       at
> org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:209)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntime
> Library.java:8
> 08)
>       at 
> org.apache.jsp.MakePage_jsp._jspService(MakePage_jsp.java:460)
>       ... 59 more
> Caused by: java.net.SocketException: Software caused 
> connection abort: socket write error
>       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(DashoA6275)
>       ... 84 more
> 
> Greg Strobl
> Analytical Healthcare Solutions
> 
> 
> --
> To unsubscribe, e-mail:   
> <mailto:tomcat-dev-> [EMAIL PROTECTED]>
> For 
> additional commands, 
> e-mail: <mailto:[EMAIL PROTECTED]>
> 
> 

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to