你的位置:首页 > Java教程

[Java教程]【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.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)在工具和扩展中找到了,迅雷下载支持,并且是启用的,然后禁用它:

    

        

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