`
iamxi
  • 浏览: 188573 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

“ClientAbortException: java.net.SocketException:”异常的问题

阅读更多
前几天,在做图片以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 楼 zyyedna 2016-11-03  
你好,请问我用Captcha captcha = configurableCaptchaService.getCaptcha()生成的验证码默认是什么类型的呢,我验证码这块用一段时间会出现“ClientAbortException: java.net.SocketException:”异常的问题
// 取得验证码图片并输出 
BufferedImage bufferedImage = captcha.getImage();

ImageIO.write(bufferedImage, "PNG", outputStream);write这块报错

相关推荐

Global site tag (gtag.js) - Google Analytics