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

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一.场景

页面上提供下载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.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:371)

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

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

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

at jxl.write.biff.CompoundFile.writeExcelData(CompoundFile.java:249)

at jxl.write.biff.CompoundFile.write(CompoundFile.java:233)

at jxl.write.biff.File.close(File.java:95)

at jxl.write.biff.WritableWorkbookImpl.close(WritableWorkbookImpl.java:352)

Caused by: java.io.IOException

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

at org.apache.coyote.http11.InternalAprOutputBuffer.access$100(InternalAprOutputBuffer.java:37)

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

at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:119)

三.解决方案

<一>错误分析

1.从网上查找,ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的原因是由于处理http连接时,正在输出内容时,用户关闭了IE,会出现一个"ClientAbortException",属于I/O处理中出现的一个异常,应用服务器应该会捕捉。

2.客户端造成的,没有办法控制,而且后台会记录这个异常。

3.我发下并没有在输入的时候关闭浏览器的操作,不过可以确定一点是IE浏览器连接之后,强制关闭造成的IO异常,导致客户端请求中断;

<二>问题根源

操作中发现,IE这个时候下载的动作不是浏览器自身的下载器进行的,而是迅雷插件执行的下载动作。如图,

因此,我就想会不会是迅雷的组件阻断了IE下载器的请求,导致后台报错。

于是,我想办法恢复IE默认的下载器的功能。过程如下,

(1)Internet选项,打开 ”管理下载项“:

(2)在工具和扩展中找到了,迅雷下载支持,并且是启用的,然后禁用它:

(3)重启 IE之后:进行下载操作,结果一切正常,问题解决:

查看后台没有报错信息。问题解决。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航