title: Prevent ClientAbortException
body: <p>I get this exception when I try to send data to the client browser. I use the apache POI lib to generate a Excel file like in this example:</p>
  
  <pre><code>workbook = generateData();
  response.setContentType("application/vnd.ms-excel");
  response.setHeader("Content-Disposition", "attachment; filename=" + this.filename);
  out = response.getOutputStream();
  workbook.write(out);
  </code></pre>
  
  <p>This works well for small amounts of data, but everytime I try this with a larger amount of data it won´t work. The application needs more than 30sec to generate the data, is this too long and can I prevent this?</p>
  
  <pre><code>ClientAbortException:  java.net.SocketException: Broken pipe
      at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)
      at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448)
      at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:318)
      at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:274)
      ...
  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.jk.common.ChannelSocket.send(ChannelSocket.java:539)
      at org.apache.jk.common.JkInputStream.doWrite(JkInputStream.java:162)
      at org.apache.coyote.Response.doWrite(Response.java:560)
      at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)
  </code></pre>