java – 在ServletOutputStream中写入字节时断管

执行此代码时,

ServletOutputStream out = response.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();  
out.close();  

我经常得到这个例外,我无法弄清楚它为什么会发生.

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)

我有一个在Linux服务器上运行的Web应用程序,在JBoss 4.2.3和MySQL下运行.

这是怎么造成的,我该如何解决?

解决方法:

通常这是由于客户端断开连接.客户端可能已断开连接的原因有多种(超时,浏览器已关闭等).此外,作为一般惯例,如果您没有打开流,则不要关闭.更多关于在这里关闭流Should I close the servlet outputstream?.

上一篇:java – 爆炸的WAR文件的优点/缺点


下一篇:java – 从jar中自动检测Hibernate中的类