SSH文件下载服务器报 clientAbortException:java.io.IOException

本文介绍在Struts2框架下,如何处理文件下载过程中因用户取消或网络中断导致的ClientAbortException异常。通过配置struts2-sunspoter-stream-1.0.jar库,实现稳定且健壮的文件下载功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.需求场景

服务器后台报错,堆栈信息如下:

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)
.......

2.项目环境

struts2 spring2.5 hibernate3

3.解决方案

(1)针对用户中途取消下载,struts2做如下配置(导入struts2-sunspoter-stream-1.0.jar)

<package name="default" namespace="/" extends="struts-default">  
<!-- 添加如下内容 -->  
<result-types>  
<result-type   
name="streamx" class="com.sunspoter.lib.web.struts2.dispatcher.StreamResultX"/>  
</result-types>  

<action name="download" class="com.DownloadFileAction">  
<!-- type改写 -->               
<result name="success" type="streamx">  
                 <param name="inputName">download</param>  
                 <param name="bufferSize">4096</param>  
                 <param name="contentDisposition">filename=""</param>  
                 <param name="contentCharSet">UTF-8</param>  
             </result>  
</action>  
</package>  

(2)针对用户用户网络环境不稳定,文件下载期间网络中断,服务器端会捕获因客户端网络中断而发生的异常信息,不影响程序正常运行,可忽视,或者将该异常做特殊处理(捕获,不输出,或者输出warn info 日志提示)。

 

引用:

https://haige18.iteye.com/blog/1501539

https://blog.youkuaiyun.com/smile_life_/article/details/52875203

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值