Java服务器做Excel导出遇到异常 50
用tomcat做Excel文件导出遇到以下异常。请问该如何解决?ClientAbortException:java.io.IOExceptionatorg.apache....
用tomcat做Excel文件导出遇到以下异常。请问该如何解决?
ClientAbortException: java.io.IOException
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:363)
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 org.apache.jsp.cems.ssp.tasks.TaskResultDownload_jsp._jspService(org.apache.jsp.cems.ssp.tasks.TaskResultDownload_jsp:85)
... 字数过长省略
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.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
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)
... 33 more 展开
ClientAbortException: java.io.IOException
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:363)
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 org.apache.jsp.cems.ssp.tasks.TaskResultDownload_jsp._jspService(org.apache.jsp.cems.ssp.tasks.TaskResultDownload_jsp:85)
... 字数过长省略
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.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
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)
... 33 more 展开
4个回答
展开全部
看样子是下载时间太长,客户端超时断开了
这种下载,建议做成异步,即:用户点击下载时返回一个流水后,后台生成文件,待生成好了前端再生成下载链接。(文件也建议放到web服务器,而不是应用服务器)
这种下载,建议做成异步,即:用户点击下载时返回一个流水后,后台生成文件,待生成好了前端再生成下载链接。(文件也建议放到web服务器,而不是应用服务器)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
网上找的,看和你的对不对
楼主。。你这个异常我也遇见过。当时好多人进行了讨论。很严肃地告诉你。这个不是java异常。。而是客户端异常。你能做的就是不要提示这个异常就好了。。
因为这是客户端行为。比如说弹出下载框的时候。但是却点了取消。。就很有可能会出现这个异常了。我说的对吧??
或者弹出下载框的时候,没有直接点击下载,而是选择了其它下载工具下载。
此问题可以忽略,或者将异常输出去除~
异常有2个
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
这个是因为客户端取消了下载,而服务器端继续向浏览器写入数据时,抛出这个异常,这个是正常的,比如我正打开你的下载页面,中间我取消,或者换了页面。
java.lang.IllegalStateException: getOutputStream() has already been called for this response
这个异常是因为你在调用 response,getOutputStream()之前,已经有内容输出了,
一般建议这种流操作在servlet里面进行,不要使用jsp来做,如果做就不要在前面些任何东西,并且在jsp代码的第一行加上
<%
out.clearBuffer();
%>
楼主。。你这个异常我也遇见过。当时好多人进行了讨论。很严肃地告诉你。这个不是java异常。。而是客户端异常。你能做的就是不要提示这个异常就好了。。
因为这是客户端行为。比如说弹出下载框的时候。但是却点了取消。。就很有可能会出现这个异常了。我说的对吧??
或者弹出下载框的时候,没有直接点击下载,而是选择了其它下载工具下载。
此问题可以忽略,或者将异常输出去除~
异常有2个
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
这个是因为客户端取消了下载,而服务器端继续向浏览器写入数据时,抛出这个异常,这个是正常的,比如我正打开你的下载页面,中间我取消,或者换了页面。
java.lang.IllegalStateException: getOutputStream() has already been called for this response
这个异常是因为你在调用 response,getOutputStream()之前,已经有内容输出了,
一般建议这种流操作在servlet里面进行,不要使用jsp来做,如果做就不要在前面些任何东西,并且在jsp代码的第一行加上
<%
out.clearBuffer();
%>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询