ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error"异常原因分析
在网上查找了了下原因,大概归结为: 
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的原因是由于处理http连接时,正在输出内容时,用户关闭了IE,会出现一个"ClientAbortException",属于I/O处理中出现的一个异常,应用服务器应该会捕捉。 
Connection reset by peer的原因: 
经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是: 
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉; 
②:客户关掉了浏览器,而服务器还在给客户端发送数据; 
③:浏览器端按了Stop 

多人都说是客户端造成的,没有办法控制,而且后台会记录这个异常,日志也会疯狂爆满,时间长了,肯定会DOWN掉的.
本人觉得大多数可能是第二条问题的原因引起的,即大多数浏览器阻止了窗口的弹出,相当于客户关掉了浏览器,可等效于浏览器端按了Stop ,而这时服务器端还在给客户端发送数据,所以产生了上异常,经过本人的测试,发现只需将网站地址(或本机地址)加入"受信任的站点"即可解决问题,因为这样设置了以后,浏览器就不会阻止窗口的弹出了,这样浏览器就会等到服务器端发送完数据后再进行下面的动作.因而异常就不会发生了.

大概设置方式如下:"工具->internet(选项..)->安全->受信任的站点->站点",将地址加入即可.


网友提供了如下解决方法:

可以修改tomcat的catalina.jar包,就在server目录下,只要替换org.apache.catalina.connector.ClientAbortException类即可,原来类的代码很简单,太长贴不了,我就贴里面我唯一修改注释过的那个方法: package org.apache.catalina.connector; import java.io.IOException; public final class ClientAbortException extends IOException { public ClientAbortException(String message, Throwable throwable) { this.message = null; this.throwable = null; //注释掉这行即可 //this.message = message; this.throwable = throwable; } } 我就注释掉了“//this.message = message;”这一行,就是把任何扔进来的错误信息都忽略,就可以防止tomcat这个让人讨厌的报错动作了。 


阅读更多
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error"异常原因分析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭