dwr使用中过程中出现进程死锁导致服务器死机

本文记录了使用 DWAR 2.0.4 版本时遇到的服务器死锁问题及解决过程。作者通过分析发现 DefaultScriptSessionManager 类中的一个循环处理不当,导致了服务器资源耗尽并最终引发 tomcat 崩溃。通过对比不同版本的源码,最终找到问题所在,并提供了一个修改过的 DWAR jar 包。

  

    我的项目中使用了dwr2.0版本,在最初使用的时候出现了如下的报错: 例外被抛出且未被接住,一直找不到解决的方法,在javaeye上找到dwr应用时请注意(初学者) ,使用了博主提供的解决方案jar包,终于能正常使用了. 

   但最近dwr出现了一个问题,造成服务器多次出现死锁,然后由于服务器分配资源耗尽,导致tomcat死机,查看日志,输入多次以下错误,最后tomcat被关闭:

ERROR: 2008-06-18 07:12:11,912: CommonsLoggingOutput[line:75]: DefaultScriptSessionManager.invalidate): removeCount=0 when invalidating: DefaultScriptSession[id=${scriptSessionId}403]

 

   查找解决方法,但是找到的唯一的匹配方法是删除多余的dwr包,检查过web配置,只有一个dwr包,,现在服务器几乎是一到下午四点左右就死机,需要重启,十分郁闷.

 

   后来有一篇文章说,在dwr2.0.2以前的版本会出现这种错误,原因在于DefaultScriptSessionManager这个类中的一个方法,它的一个循环处理应该放到同步线程处理当中.

   我原来使用的dwr包是2.0.4,但看过博主提供的解决jar包,这个类是修改的2.0.2以前的版本.

   找到2.0.4中的类,讲DefaultScriptSessionManager类覆盖了博主的解决jar包,重新覆盖了jar包.

   服务器运行了一段时间,没有出现以上错误,但由于还没有到错误发生的特定时间,还没办法确认修改是否有效.

 

    附件是我修改了DefaultScriptSessionManager的dwr的jar包.

    如果修改无效的话,附件就处理掉,呵呵.

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值