You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Rob GB <ro...@hotmail.com> on 2011/05/19 12:44:07 UTC
Tomcat download stream gets broken
Hi all,
I have a file download servlet running on Tomcat, the code is
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException { byte buf[] = new byte[1024 * 4]; try { File file = new File(realFilename); int size = (int) file.length(); BufferedInputStream realFile = new BufferedInputStream(new FileInputStream(file)); OutputStream out = response.getOutputStream(); response.setContentLength(size); while (true) { int count = realFile.read(buf); if (count == -1) { break; } out.write(buf, 0, count); } out.flush(); } catch (FileNotFoundException e) { logger.error("Stream download failed, file not found: " + realFilename, e); response.sendError(404); } catch (Exception e) { logger.error("DownloadException:", e); } }
However once in a while I get an error that prevents files from being downloaded:
DownloadException: java.net.SocketException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) 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 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113) at java.lang.Thread.run(Thread.java:619)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 org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:750) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:773) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:583) at org.apache.coyote.Response.doWrite(Response.java:560) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361) ... 23 more
My tomcat connector has this settings:
<Connector port="8968" disableUploadTimeout="true" enableLookups="false" acceptCount="10000" connectionTimeout="120000" maxKeepAliveRequests="20" maxSpareThreads="300" maxThreads="300" minSpareThreads="100" strategy="ms" threadPriority="java.lang.Thread#MAX_PRIORITY" tcpNoDelay="true" protocol="org.apache.coyote.http11.Http11Protocol" compression="on" server="" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript" clockless="false"/>
How can I prevent such an error?
Thanks!!!
Re: Tomcat download stream gets broken
Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Rob,
*sigh*
We'll argue about this all week if someone doesn't just reformat your
code and go for it. Evidently, I've got nothing better to do.
On 5/19/2011 6:44 AM, Rob GB wrote:
> public void service(HttpServletRequest request, HttpServletResponse response)
> throws IOException {
> byte buf[] = new byte[1024 * 4];
> try {
> File file = new File(realFilename);
> int size = (int) file.length();
Fail: file size truncation.
> BufferedInputStream realFile = new BufferedInputStream(new FileInputStream(file));
> OutputStream out = response.getOutputStream();
> response.setContentLength(size);
Fail: file size truncation (it's a stupid oversight in the Servlet API
that we have to live with, forever, now).
You might also want to sent a Content-Type header. That's always nice.
> while (true) {
> int count = realFile.read(buf);
> if (count == -1) {
> break;
> }
> out.write(buf, 0, count);
> }
That's an odd way to write that loop. You know, it can be written
without a "break" and in fewer lines?
> out.flush();
> } catch (FileNotFoundException e) {
> logger.error("Stream download failed, file not found: "
> + realFilename, e);
> response.sendError(404);
> } catch (Exception e) {
> logger.error("DownloadException:", e);
What, no 500 error?
> }
> }
>
> However once in a while I get an error that prevents files from being downloaded:
>
> DownloadException: java.net.SocketException: Broken pipe
> at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
> [...]
It's a broken pipe. Your client didn't wait for the download to complete
before hanging up the phone. I don't believe this is a bug in your code.
> <Connector port="8968"
> disableUploadTimeout="true"
> enableLookups="false"
> acceptCount="10000"
That's a pretty big accept queue. Why do you need it that big?
> connectionTimeout="120000"
That's a long time to wait around for an HTTP request line. Why do you
need it to be so long?
> maxKeepAliveRequests="20"
> maxThreads="300"
> threadPriority="java.lang.Thread#MAX_PRIORITY"
Let me guess... your application wasn't going fast enough? Is there a
reason why need all your request-processing threads to go at MAX_PRIORITY?
> tcpNoDelay="true"
This is the default.
> protocol="org.apache.coyote.http11.Http11Protocol"
> compression="on"
> compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript"
> server=""
> minSpareThreads="100"
> maxSpareThreads="300"
> strategy="ms"
> clockless="false"/>
I don't recognize those last four settings. For the (ignored) threading
settings, maybe you intended to use an <Executor>?
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk3VgyoACgkQ9CaO5/Lv0PARMACfTMaIH/cPRjuYYtcKJ7OigPgp
gUIAnA9EX2LlQC6sMn7T/vtdmwOiOBe/
=LZMo
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
RE: Tomcat download stream gets broken
Posted by "Caldarale, Charles R" <Ch...@unisys.com>.
> From: Rob GB [mailto:rob_gar_esp@hotmail.com]
> Subject: RE: Tomcat download stream gets broken
> ok, trying again, it looks formatted in hotmail editor:
Try using a real e-mail client. This is what it looks like to the rest of the world:
http://marc.info/?l=tomcat-user&m=130581549006975&w=2
One very ugly long line.
- Chuck
THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: Tomcat download stream gets broken
Posted by Pid <pi...@pidster.com>.
Oh dear.
On 19/05/2011 17:09, Rob GB wrote:
>
> Hi,I sent it from gmail in the right format some minutes ago, you should had already received it.Here it goes again. Thanks.
>
> public void service(HttpServletRequest request, HttpServletResponse response) throws IOException { byte buf[] = new byte[1024 * 4]; try { File file = new File(realFilename); int size = (int) file.length(); BufferedInputStream realFile = new BufferedInputStream(new FileInputStream(file)); OutputStream out = response.getOutputStream(); response.setContentLength(size); while (true) { int count = realFile.read(buf); if (count == -1) { break; } out.write(buf, 0, count); } out.flush(); } catch (FileNotFoundException e) { logger.error("Stream download failed, file not found: " + realFilename, e); response.sendError(404); } catch (Exception e) { logger.error("DownloadException:", e); } }
> However once in a while I get an error that prevents files from being downloaded:
>
> DownloadException: java.net.SocketException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) 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 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.Ap
plicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorker
Thread.java:113) at java.lang.Thread.run(Thread.java:619)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 org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:750) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:773) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:583) at org.apache.coyote.Response.doWrite(Response.java:560) at org.apache.ca
talina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361) ... 23 more
>
>
>
>> Date: Thu, 19 May 2011 18:03:39 +0200
>> From: aw@ice-sa.com
>> To: users@tomcat.apache.org
>> Subject: Re: Tomcat download stream gets broken
>>
>> Rob GB wrote:
>>>> No-one is going to read all that unformatted code. Try again.> > p>
>>> ok, trying again, it looks formatted in hotmail editor:
>>
>> Get a better email program, cause it ain't formatted here.
>> Are you trying to send this "as html" by any chance ? If yes, then try "as plain text" if
>> your email program has such an option.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
RE: Tomcat download stream gets broken
Posted by Rob GB <ro...@hotmail.com>.
Hi,I sent it from gmail in the right format some minutes ago, you should had already received it.Here it goes again. Thanks.
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException { byte buf[] = new byte[1024 * 4]; try { File file = new File(realFilename); int size = (int) file.length(); BufferedInputStream realFile = new BufferedInputStream(new FileInputStream(file)); OutputStream out = response.getOutputStream(); response.setContentLength(size); while (true) { int count = realFile.read(buf); if (count == -1) { break; } out.write(buf, 0, count); } out.flush(); } catch (FileNotFoundException e) { logger.error("Stream download failed, file not found: " + realFilename, e); response.sendError(404); } catch (Exception e) { logger.error("DownloadException:", e); } }
However once in a while I get an error that prevents files from being downloaded:
DownloadException: java.net.SocketException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) 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 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113) at java.lang.Thread.run(Thread.java:619)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 org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:750) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:773) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:583) at org.apache.coyote.Response.doWrite(Response.java:560) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361) ... 23 more
> Date: Thu, 19 May 2011 18:03:39 +0200
> From: aw@ice-sa.com
> To: users@tomcat.apache.org
> Subject: Re: Tomcat download stream gets broken
>
> Rob GB wrote:
> >> No-one is going to read all that unformatted code. Try again.> > p>
> > ok, trying again, it looks formatted in hotmail editor:
>
> Get a better email program, cause it ain't formatted here.
> Are you trying to send this "as html" by any chance ? If yes, then try "as plain text" if
> your email program has such an option.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: Tomcat download stream gets broken
Posted by André Warnier <aw...@ice-sa.com>.
Rob GB wrote:
>> No-one is going to read all that unformatted code. Try again.> > p>
> ok, trying again, it looks formatted in hotmail editor:
Get a better email program, cause it ain't formatted here.
Are you trying to send this "as html" by any chance ? If yes, then try "as plain text" if
your email program has such an option.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
RE: Tomcat download stream gets broken
Posted by Rob GB <ro...@hotmail.com>.
> No-one is going to read all that unformatted code. Try again.> > p>
ok, trying again, it looks formatted in hotmail editor:
I have a file download servlet running on Tomcat, the code is
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException { byte buf[] = new byte[1024 * 4]; try { File file = new File(realFilename); int size = (int) file.length(); BufferedInputStream realFile = new BufferedInputStream(new FileInputStream(file)); OutputStream out = response.getOutputStream(); response.setContentLength(size); while (true) { int count = realFile.read(buf); if (count == -1) { break; } out.write(buf, 0, count); } out.flush(); } catch (FileNotFoundException e) { logger.error("Stream download failed, file not found: " + realFilename, e); response.sendError(404); } catch (Exception e) { logger.error("DownloadException:", e); } }
However once in a while I get an error that prevents files from being downloaded:
DownloadException: java.net.SocketException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) 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 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113) at java.lang.Thread.run(Thread.java:619)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 org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:750) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:773) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:583) at org.apache.coyote.Response.doWrite(Response.java:560) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361) ... 23 more
How can I prevent such an error? Thanks!!!
Re: Tomcat download stream gets broken
Posted by Pid <pi...@pidster.com>.
On 19/05/2011 11:44, Rob GB wrote:
>
> Hi all,
> I have a file download servlet running on Tomcat, the code is
>
> public void service(HttpServletRequest request, HttpServletResponse response) throws IOException { byte buf[] = new byte[1024 * 4]; try { File file = new File(realFilename); int size = (int) file.length(); BufferedInputStream realFile = new BufferedInputStream(new FileInputStream(file)); OutputStream out = response.getOutputStream(); response.setContentLength(size); while (true) { int count = realFile.read(buf); if (count == -1) { break; } out.write(buf, 0, count); } out.flush(); } catch (FileNotFoundException e) { logger.error("Stream download failed, file not found: " + realFilename, e); response.sendError(404); } catch (Exception e) { logger.error("DownloadException:", e); } }
> However once in a while I get an error that prevents files from being downloaded:
>
> DownloadException: java.net.SocketException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) 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 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.Ap
plicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorker
Thread.java:113) at java.lang.Thread.run(Thread.java:619)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 org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:750) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:773) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:583) at org.apache.coyote.Response.doWrite(Response.java:560) at org.apache.ca
talina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361) ... 23 more
> My tomcat connector has this settings:
> <Connector port="8968" disableUploadTimeout="true" enableLookups="false" acceptCount="10000" connectionTimeout="120000" maxKeepAliveRequests="20" maxSpareThreads="300" maxThreads="300" minSpareThreads="100" strategy="ms" threadPriority="java.lang.Thread#MAX_PRIORITY" tcpNoDelay="true" protocol="org.apache.coyote.http11.Http11Protocol" compression="on" server="" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript" clockless="false"/>
>
> How can I prevent such an error?
> Thanks!!!
No-one is going to read all that unformatted code. Try again.
p