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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-21 09:53   11   0
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,则进行处理。

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP