org.apache.catalina.connector.ClientAbortException-程序员宅基地

技术标签: exception  java  java异常  ClientAbortException  

org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:410)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:442)
    at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:359)
    at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:334)
    at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:101)
    at javax.imageio.stream.FileCacheImageOutputStream.close(FileCacheImageOutputStream.java:238)
    at javax.imageio.ImageIO.write(ImageIO.java:1580)
    at com.tts.vcode.servlet.SlideVerifyCodeServlet.generateImage(SlideVerifyCodeServlet.java:61)
    at com.tts.vcode.servlet.SlideVerifyCodeServlet.service(SlideVerifyCodeServlet.java:33)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1136)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
    at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:216)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:442)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)
    at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:239)
    at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:117)
    at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
    at org.apache.coyote.Response.doWrite(Response.java:495)
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:405)
    ... 29 more

上述问题分析:

在网上查找了了下原因,大概归结为: 
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(选项..)->安全->受信任的站点->站点",将地址加入即可避免这个异常。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dream_ling/article/details/83056500

智能推荐

linux grub error17,Ubuntu Grub 问题:提示 error17 修复方法-程序员宅基地

文章浏览阅读510次。Ubuntu的安装确实比较方便,装好后就已经调整好 Grub 了 ,自动识别了Winxp,双启动了 。不过为了从WinXP上腾出空间来给 Ubuntu ,在 WinXP上安装了个 PQMagic 分区大师,空出了空间安装新系统。安装了之后,在 WinXP里有次无意进了一次PQMagic ,再系统重新启动的时候,无法进入Grub了 ,启动就报错:grub loading stage1.5error ..._grub error 17

数据库练习题3--sql基础_数据库 定义一个int的整形变量,并分别给其赋值67、123067。-程序员宅基地

文章浏览阅读1.4k次。一、练习目的1.理解局部变量和全局变量的概念和使用方法;2.掌握各种运算符的使用;3.掌握基本的SELECT语句的使用方法;4.掌握SQL-Server中流程控制语句的使用;5.掌握系统函数及用户自定义函数的使用。1.定义一个int的整形变量,并分别给其赋值67、123067。declare @m int=67print @mdeclare @m int=123067print @m2.定义一个长度为11的可变长形字符变量,并分别给其赋值“Hello World!”和“How are_数据库 定义一个int的整形变量,并分别给其赋值67、123067。

静态代码块-static关键字_class fu { static { system.out.println("静态代码块fu");-程序员宅基地

文章浏览阅读292次。class StaticCode{ //静态代码块 static { System.out.println("static code......"); } void show(){ System.out.println("show static code......"); } }class StaticCodeDemo{ public static void _class fu { static { system.out.println("静态代码块fu"); } { syst

多个fragment切换,而不重新加载数据的实现_android 使用fragmenttransaction切换fragment的时候怎么预加载不可见-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏4次。多个fragment切换,而不重新加载数据的实现1、在xml中添加一个framlayout<FrameLayout android:id="@+id/framelayout" android:layout_width="match_parent" android:layout_weight="1" android:layout..._android 使用fragmenttransaction切换fragment的时候怎么预加载不可见fragment

CGAL3.7+VS2008安装-程序员宅基地

文章浏览阅读2.1k次。CGAL3.7+VS2008安装 [转自师兄博客http://www.cnblogs.com/goryu/archive/2010/12/24/1915633.html】安装CGAL我百感交集过,因为我是菜鸟级别,没有办法,首先第一步就是网上狂搜资料,不过真是中国互联网络混乱不堪啊,所搜集的资料多数通不过,费了几天功夫挑出了基本说法不错的方法,我就开始了艰难的验证过程。失败成了家常便饭

SSM框架相关知识_ssm框架有哪些知识点-程序员宅基地

文章浏览阅读3.3w次,点赞19次,收藏45次。1.Spring MVC工作原理:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调用业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责_ssm框架有哪些知识点

随便推点

解决问题:TypeError: only size-1 arrays can be converted to Python scalars-程序员宅基地

文章浏览阅读4.4k次,点赞6次,收藏2次。TypeError: only size-1 arrays can be converted to Python scalars关于opencv绘制3D直方图报错问题:要做个图像处理作业 在网上找了许多代码有关3d直方图的,代码都一样,拿来复制粘贴就好了。运行的时候出bug了,查了一下都没有解决办法,作为一个代码小白耐心看看代码,原来出错的原因也很简单哇!运行:ax.bar(pix_vals..._typeerror: only size-1 arrays can be converted to python scalars

美团面试_qinglangsu 美团-程序员宅基地

文章浏览阅读89次。redis写策略 oracle部分成功部分失败怎么办 redis失效命令失败怎么办,有异常处理吗有jvm调优经验吗,有遇到过oom吗强引用,弱引用等知道哪些垃圾回收器 G1 CMS 特点,用了什么回收算法concurrenthashmap put是synchronized的,get也是吗知道哪些地方用到了volatile, 比如concurrenthashmap里,哪..._qinglangsu 美团

PyCharm range用法-程序员宅基地

文章浏览阅读251次。2、range(0, 100, 10) # range 生成以10为间隔 [0, 100) 的数组。1、range(3) # range 生成 [0, 3) 即 0,1,2 这样一个数组。_pycharm range

地理信息系统(汤国安)重点整理与推导(第三章)_地理实体空间关系应用场景有哪些-程序员宅基地

文章浏览阅读4.9k次,点赞3次,收藏59次。1. 地理空间地理空间是指地球表面及近地表空间,是地球上大气圈,水圈,生物圈,岩石圈和智慧圈交互作用的区域,地球上最复杂的物理过程,化学过程,生物过程和生物地球化学过程就发生在该区域。2. 地理空间实体地理空间实体就是对复杂地理事物和现象进行简化抽象得到的结果,简称空间实体,它们的一个典型特征就是与一定的地理空间位置有关,都具有一定的几何形态,分布状况以及彼此之间的相互关系。3. 空间实体的基本特征(1)空间位置特征表示空间实体在一定的坐标系中的空间位置或几何定义,通常采用地理坐标的_地理实体空间关系应用场景有哪些

chrome inspect无法识别到手机解决方案之一_手机remote target-程序员宅基地

文章浏览阅读2.1w次,点赞3次,收藏2次。chrome inspect是一个很好用的调试安卓手机H5页面的工具,可以不用对手机进行抓包,使用数据线将手机连接到电脑,再打开chrome://inspect/#devices若Remote Target下方无设备,则表示没有识别成功。此时,查看下手机是否已开启开发者调试模式。虽然有时候连上数据时会提示充电或者传输文件,但是这不代表开发者调试模式已经开启,需要在“设置”里面打开。PS..._手机remote target

sails框架条件查询_sails查询-程序员宅基地

文章浏览阅读525次。实现功能:在sails框架下实现原生sql语句导入并进行条件搜索利用方法:sql拼接1.首先利用sails框架的sendNativeQuery方法写原生sql语句2.对sql语句进行字符串的拼接3.拼接过程中尤其注意空格、引号的处理以下是实际项目中的代码如果有更好的方法,也请留言告知。..._sails查询

推荐文章

热门文章

相关标签