前几天,在做图片以stream形式输出到页面上展现的时候,后台一直报异常,且页面上图片无法正常现实。异常内容为:
ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:309)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:288)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:98)
at javax.imageio.stream.FileCacheImageOutputStream.close(FileCacheImageOutputStream.java:213)
......
在网上找了好久,发现是个普遍问题,但原因各异,有人总结为:
1:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
2:客户关掉了浏览器,而服务器还在给客户端发送数据;
3:浏览器端按了Stop;
4:服务器给客户端响应结果给防火墙拦截了。
这些原因太过笼统,细查错误很难。
偶然在一个英文网页上看到了条有关这个异常的,本人英语水平差,只能说个大意:
这个已知异常出现在IE浏览器显示tif格式的图片的时候。
亲自试验了下,的确在chrome和火狐上显示时,后台不会报次错误,不过图片显示有点异样。因为图片是存于数据库的BLOB类型的字段中,所以一直没注意图片的格式,后来才发现,原来图片是gif格式,而我使用ImageIO.write(img, "jpeg", response.getOutputStream());输出成jpg格式的图片,以致导致IE浏览器对图片解析有问题。在此将jpeg改成gif后不再出现异常。
忙乎了一天多,结果问题出在这里。
其问题导致的原因可能是:IE浏览器在解析错误图片格式或不支持的图片格式时,可能向服务器发送了多次请求或是直接关闭了连接,从而导致了tomcat报次异常。
分享到:
相关推荐
问题1:TOMCAT下载文件出错:org.apache.catalina.connector.ClientAbortException. 问题2:TOMCAT记录接收数据大小、发送数据大小和请求处理时间
Apache POI是一个开源的Java API,用于处理Microsoft Office格式的文件,包括Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx) 和 Word (.doc, .docx)。POI提供了一套工具集,允许开发者在不依赖Office软件的情况下,...
java-poi-excel-导出20万条记录
在struts2中使用result里type="stream"的结果类型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”中点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容...
- 使用`java.net.URLDecoder.decode()`对编码后的字符串进行解码,例如`URLDecoder.decode("%E4%BD%A0%E5%A5%BD", "UTF-8")`。 ### 5. RESTful API与注解 - **RESTful API**:一种设计网络应用程序的架构风格,其...
3. **错误信息**:后台抛出`ClientAbortException`异常,提示为`IOException:null`。 4. **特殊行为**:手机默认浏览器在请求视频时,会同时向后台发送两个请求。 针对这些问题,我们首先排除了一些常见的原因,...
根据给定的信息,我们可以推断出这段内容主要讨论了如何在Struts框架中实现文件下载功能,特别是关于Struts 1.x版本中的`DownloadAction`类的使用方法及其相关问题的解决策略。下面将对这些内容进行详细解析,并提供...
在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),非常让人头疼,如何彻底解决呢?附件中使用struts2-...
经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),附件中使用struts2-sunspoter-stream-1.0.jar插件可完美解决此类问题。