While executing this code,
ServletOutputStream out = response.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();
out.close();
I'm getting this exception frequently and I can't figure out why it's happening.
Caused by: ClientAbortException: java.net.SocketException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:354)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
I have a web app running in a linux server, under JBoss 4.2.3 and MySQL.
How is this caused and how can I solve it?
This can be improved by adding proper response.setBufferSize(bufferSizeneeded+200); The default buffer size is 8124 , Which may not be applicable for all the users ! and response.setHeader("Content-Length", String.valueOf(exportData.length));
Typically this is due to the client disconnecting. There are several reasons the client may have disconnected (timed out, browser was closed, etc). Also, as general practice, if you didn't open the stream then don't close. More on closing the stream here Should I close the servlet outputstream?.