Which line of code is on 71?
helloworldservlet.ServletVideo.streamBinaryData(ServletVideo.java:71)
In your finally block, you are closing the servlet output stream, I wonder if that's causing tomcat a problem since it usually closes the servlet output stream itself?
Humour me and change
if( outstr != null ) {
outstr.flush();
outstr.close();
}
to
if( outstr != null ) {
outstr.flush();
}
> -----Original Message-----
> From: Adriana Suarez [mailto:[EMAIL PROTECTED]
> Sent: 28 June 2005 04:33
> To: tomcat-user@jakarta.apache.org
> Subject: ClientAbortException: java.net.SocketException: Connection
> reset by peer: socket write error
>
>
> Hello,
>
> I got this exception and I don't know how to solve it, I have a web
> application with a servlet which sends video with formats avi, mpeg,
> and mov, it shows the video but the tomcat throws this exception:
>
> ClientAbortException: java.net.SocketException: Connection reset by
> peer: socket write error
> at
> org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBu
> ffer.java:373)
> at
> org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)
> at
> org.apache.coyote.tomcat5.OutputBuffer.writeBytes(OutputBuffer
> .java:401)
> at
> org.apache.coyote.tomcat5.OutputBuffer.write(OutputBuffer.java:388)
> at
> org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutpu
> tStream.java:76)
> at
> java.io.BufferedOutputStream.write(BufferedOutputStream.java:106)
> at
> helloworldservlet.ServletVideo.streamBinaryData(ServletVideo.java:71)
> at helloworldservlet.ServletVideo.doGet(ServletVideo.java:37)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(ApplicationFilterChain.java:237)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterChain.java:157)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.java:214)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(S
> tandardContextValve.java:198)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.java:152)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:137)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:117)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:102)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java:109)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:520)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.
> java:160)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Process
> or.java:799)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
> r.processConnection(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
> nt.java:577)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:683)
> at java.lang.Thread.run(Thread.java:534)
>
> and this is where the code fails:
>
> private void streamBinaryData(String urlstr,String
> format,ServletOutputStream outstr, HttpServletResponse resp)
> {
> String ErrorStr = null;
> try{
> //find the right mime type and set it as contenttype
> resp.setContentType(getMimeType(format));
> BufferedInputStream bis = null;
> BufferedOutputStream bos = null;
> try{
> URL url = new URL(urlstr);
> URLConnection urlc= url.openConnection();
> int length =urlc.getContentLength();
> resp.setContentLength(length);
> // Use Buffered Stream for reading/writing.
> InputStream in = urlc.getInputStream();
> bis = new BufferedInputStream(in);
> bos = new BufferedOutputStream(outstr);
> byte[] buff = new byte[length];
> int bytesRead;
> // Simple read/write loop.
> while(-1 != (bytesRead = bis.read(buff, 0,
> buff.length))) {
> bos.write(buff, 0, bytesRead);
> }
> } catch (Exception e) {
> e.printStackTrace();
> ErrorStr = "Error Streaming the Data";
> outstr.print(ErrorStr);
> } finally {
> if( bis != null ) {
> bis.close();
> }
> if( bos != null ) {
> bos.close();
> }
> if( outstr != null ) {
> outstr.flush();
> outstr.close();
> }
> }
> }
> catch(Exception e){
> e.printStackTrace();
> }
> }
>
> I have read many forums but they do not explain in detail what the
> problem is, some they say is a tomcat bug. Can anyone help me to
> figure it out?
>
> Thanks
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
<FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLUE>
-------------------------------------------------------
QAS Ltd.
Registered in England: No 2582055
Registered in Australia: No 082 851 474
-------------------------------------------------------
</FONT>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]