GalaxyPilot —— D.S


        生命不熄,战斗不止
数据加载中……

自动重启JBOSS服务器

      开发的应用在测试过程中发生了java.lang.OutOfMemoryError 错误,一时找不到问题所在,只能先写个脚本,当该脚本检测到jboss服务挡掉时,就自动重启jboss服务器。脚本中用到了pstools中的pskill,网上可以下载到,把这个脚本和pskill一起放到jboss的bin目录下即可。只pskill java后,运行bat的cmd窗口并没有关掉,本人也没有找到在脚本中得到cmd窗口ID的方法,用WshShell.Exec也有一些问题,所以只能再pskill cmd,这样可能会影响您的其它工作,可以根据您的情况做一些修改。而且脚本只能通过wscript.exe来运行,也就是不让出现cmd窗口,不然会一起被kill掉,这样就达不到自动重启的目的。
      另一个问题是当出现java.lang.OutOfMemoryError错误时,jboss服务器好像并不是完全挡掉,一些不访问数据库的jsp页面一样可以访问,所以ping.jsp最好是一个访问了数据库的文件。当然,脚本中循环访问该页面,肯定会加重web服务器和数据库服务器的负担,所以,循环的速度要根据您的具体情况做适当的调整。该脚本不至是针对jboss服务器和java.lang.OutOfMemoryError,作很少的修改,您可以应用到其它服务器和检查特定的web服务器出现的问题,然后做相应的处理。

------------------------restart.vbs------------------------
on error resume next
Dim a
a=true
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run("run.bat")
WScript.Sleep(60000)
Do While a
   set http = CreateObject("Microsoft.XMLHTTP")
   http.open "POST","http://127.0.0.1:8080/gtgdh/ping.jsp",false
   http.send
   if http.Status > 300 then
      WshShell.Run("pskill java")
      WScript.Sleep(3000)
      WshShell.Run("pskill cmd")
      WshShell.Run("run.bat")
      WScript.Sleep(60000)
   end if
   WScript.Sleep(5000)
loop

posted on 2006-04-18 10:19 舵手 QQ:8117892 阅读(1836) 评论(1)  编辑  收藏

评论

# re: 自动重启JBOSS服务器  回复  更多评论   

呵呵,我安装时把Tomcat装成系统服务了,把楼主发给我的代码修改如下:
------------------------restart.vbs------------------------
on error resume Next

Dim a
a = True

set WshShell = WScript.CreateObject("WScript.Shell")

Do While a
set http = CreateObject("Microsoft.XMLHTTP")
http.open "POST","http://127.0.0.1:8080/index.jsp",false
http.send
if http.Status > 300 then
WshShell.Run("net stop tomcat5")
WScript.Sleep(90000)
WshShell.Run("net start tomcat5")
end if
WScript.Sleep(30000)
loop
2006-05-11 17:54 | Netboy

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-05-11 16:17 编辑过
 
成果网帮您增加网站收入
 
相关链接:
网站导航: