您的位置:首页 > 运维架构 > Apache

org.apache.catalina.connector.ClientAbortException: java.net.SocketException: 断开的管道

2019-01-07 16:39 645 查看
[code]org.apache.catalina.connector.ClientAbortException: java.net.SocketException: 断开的管道
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:432)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:420)

Caused by: java.net.SocketException: 断开的管道
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
at java.net.SocketOutputStream.write(SocketOutputStream.java:159)

服务器经常出现这种报错,日志也会疯狂爆满,时间长了,肯定会DOWN掉的。

这个问题是出现在下载附件时,当下载附件的请求发出,关掉了浏览器,而服务器还在给客户端发送数据,可能是用户终断下载或者浏览器阻止窗口的弹出。

如果是因为浏览器阻止窗口的弹出,设置方式如下:"工具->internet(选项..)->安全->受信任的站点->站点",将地址加入即可。

在代码块可以用try catch 处理异常,可以判断异常名称,如果每次为 org.apache.catalina.connector.ClientAbortException,则进行处理。

[code]catch (Exception e) {
if ("org.apache.catalina.connector.ClientAbortException".equals(e.getClass().getName())) {
logger.error("发生clientAbortException");
} else {
e.printStackTrace();
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐