老话题:ClientAbortException:socket write error

最近也遇到了ClientAbortException:socket write error这个错误,但具体情况可能和大家遇到的不一样,我慢慢道来。
环境为:tomcat 5.5 + hibernate 3.1 + spring + velocity + webwork2.2,这是大体的环境。我是在webwork的action里用Velocity做的视图,关键代码如下:
  #foreach($result in $resultList)
<li>相册名称:$!result.name</li>
<li>$!result.images.size()张照片</li>
#end

其中$!resultList是一组相册对象的集合,引起错误的代码就是$!result.images.size(),因为这是在循环里面,而 images是相册这个对象里的一个set,即表示相册的图片集合。结果日志里就出现了如下错误(注意:但页面一切正常,结果也是正确的):
Unable to render Velocity Template, '/template/xhtml/album/myAlbum.htm'>
ClientAbortException: java.net.SocketException: Software caused connection abort: socket write erro
猜想,没有把握的事情,也只能用猜想这个字眼了。hibernate 的延迟加载我设置的是true,则计算result.images.size()时会有延迟的,但又在一个循环里,因此有可能发生此错误。只是猜想而已, 呵呵,哪位大人路过看到,还望指正,小弟不胜感激!
引入一些前人,前辈们的总结供大家参考:
------------------------------------------------------------------
经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop
4 :工程中使用了hibernate,自己写了个filter类,在每个request收到时打开session,在结束时关闭,编程时一直觉得很方便,没想到就是因为这个造成这个错误的。
理想情况下这个错误可能永远也不会,但是如果流程中的某一步被阻塞的话,那在这期间connection就一直被占用而不释放。最有可能被阻塞的 就是在JSP生成html页面代码这步,一方面可能是页面内容大,response.write的时间长,另一方面可能是用户的网速慢,服务器与用户间传 输时间久。当大量这样的情况出现时,就有连接池连接不足,造成页面假死现象,这时就会报如上错误。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值