ClientAbortException:java.io.IOException解决方案

org.apache.catalina.connector 
Class ClientAbortException

java.lang.Object
  

java.lang.Throwable
      

java.lang.Exception
          

java.io.IOException
              

org.apache.catalina.connector.ClientAbortException
All Implemented Interfaces:
java.io.Serializable

ERROR [http-8080-5]: (ExportPdfController.java:196) -

ClientAbortException:  java.io.IOException

at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)

at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:368)

at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)

at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)

at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)

at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:109)

at com.shihuan.web.controller.ExportPdfController.writefile(ExportPdfController.java:189)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)

at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)

at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)

at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)

at java.lang.Thread.run(Thread.java:619)

WARN [http-8080-4]: (MyInterceptor.java:60) - 调用方法:com.shihuan.web.controller.ExportPdfController.writefile();  花费时间:153 ms.返回网页:原网页

Caused by: java.io.IOException

at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:712)

at org.apache.coyote.http11.InternalAprOutputBuffer$SocketOutputBuffer.doWrite(InternalAprOutputBuffer.java:742)

at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118)

at org.apache.coyote.http11.InternalAprOutputBuffer.doWrite(InternalAprOutputBuffer.java:552)

at org.apache.coyote.Response.doWrite(Response.java:560)

at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)

... 35 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(选项..)->安全->受信任的站点->站点",将地址加入即可避免这个异常。

-------------------------------------------------------------------------------------------------------------------

今天也遇到这个问题了,查看了下tomcat源码对于这个异常的描述无非也就是说请求被中断,我的原因是由于调用导出文件方法是用这样子的代码的
   先执行了onclick中js  然后又去执行了href中js引起的,导致前面的请求被中断。改成 或者 问题就解决了  主要是懒复制前面的写法了 要是自己写的话也肯定是也不会写成这种形式。 所以建议楼主还是从请求为什么会被中断着手去找原因吧。看看在输出流在还没有结束的时候是不是又发送了新的请求。

本文转自http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075a91d57eaf76223360123b59b8fc20bdfac925f75ce786a6459db0144dc48f2971a729066cd1afeae69f0ba872592de838d84030f8c005527c0b6dc1051438829ab496df4a7e95f142c&p=9765c64ad4934eac59eecb685f0e89&newp=c272ce1785cc43ec10bd9b7d0c1580231610db2151d7d1156b82c825d7331b001c3bbfb42324110fd8c27a6d01ad4d56edf33473340127a3dda5c91d9fb4c57479cb6f&user=baidu&fm=sc&query=connector%2EClientAbortException%3A&qid=a9c593a8000392fe&p1=4

时间: 2024-11-06 09:32:42

ClientAbortException:java.io.IOException解决方案的相关文章

【IE下载文件——后台报ClientAbortException:java.io.IOException错误】

一.场景 页面上提供下载Excel文件的功能,用于下载报表中的数据. 分别在chrome,IE中进行测试.在chrome中正常,在IE中后台报错. 二.错误信息 org.apache.catalina.connector.ClientAbortException: java.io.IOException    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407)    at org.

错误号org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

在说这个错误之前,我先介绍下背景,我们项目用的是SpringBoot框架,集成Hprose+spring+mybatis,Hprose是什么,可以参考我上篇对Hprose的一个简单介绍.当前项目业务是抓取一个网站近5年的足球篮球的赔率数据.所以这是个按照日期进行的一个大循环.介于Hprose特性,Hprose服务端的处理时间会特别长,这是个重点. 在项目上线抓取数据时,linux环境下,我们的程序出现了这样一个错误,如下: 2016-06-16 12:47:52.190 WARN 10150 -

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接. at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:299) at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:262) at o

ClientAbortException: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。,进不了Debug,访问不到方法

开发项目的时候运行报错,Debug进不去方法,猜想是js中ajax的url 路径的问题,后来找公司的斌哥解决了问题,感谢! 异常: 解决过程: 清理缓存,修改js代码,通过浏览器的F12查看,发现修改的代码并没有变动,得出结论,引入不正确. 出错原因: HTML中对应的 JS文件没有正确引入,这是一个不应该犯的错... 解决方法: 正确引入对应的js. 原文地址:https://www.cnblogs.com/weiqang/p/11429045.html

Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

异常详情 2017-07-16 10:55:26,218 ERROR [500.jsp] - java.io.IOException: 你的主机中的软件中止了一个已建立的连接. org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接. at org.apache.catalina.connector.OutputBuffer.realWriteBytes(Output

Caused by: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接. at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:321) at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284) at o

解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)

当我尝试在java中通过ProcessBuilder运行window的cmd命令时出现错误: public static void main(String [] args) throws IOException { ProcessBuilder builder = new ProcessBuilder(); Process process = builder.command("dir d:\\").start(); InputStream inputStream = process.g

Java Scoket之java.io.EOFException解决方案

Java Scoket之java.io.EOFException解决方案 Socket接收数据的时候,常常会抛出java.io.EOFException异常,也没有明确的原因和提示,在网上搜搜,很多人都在问此问题,但是没有找到切实可行的办法.经过研究,问题解决了. 看到的异常堆栈信息如下: java.io.EOFException   at java.io.DataInputStream.readFully(DataInputStream.java:178)   at java.io.DataI

eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。

eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接.全部报错信息如下: Exception in thread "main" java.io.IOException: Call to hadoopmaster/192.168.1.180:9000 failed on local exception: java.io.IOException: 远程主机强迫关闭了一个现有的连接. at org.apach