自動(dòng)重啟JBOSS服務(wù)器
??????開發(fā)的應(yīng)用在測(cè)試過程中發(fā)生了java.lang.OutOfMemoryError 錯(cuò)誤,一時(shí)找不到問題所在,只能先寫個(gè)腳本,當(dāng)該腳本檢測(cè)到j(luò)boss服務(wù)擋掉時(shí),就自動(dòng)重啟jboss服務(wù)器。腳本中用到了pstools中的pskill,網(wǎng)上可以下載到,把這個(gè)腳本和pskill一起放到j(luò)boss的bin目錄下即可。只pskill java后,運(yùn)行bat的cmd窗口并沒有關(guān)掉,本人也沒有找到在腳本中得到cmd窗口ID的方法,用WshShell.Exec也有一些問題,所以只能再pskill cmd,這樣可能會(huì)影響您的其它工作,可以根據(jù)您的情況做一些修改。而且腳本只能通過wscript.exe來運(yùn)行,也就是不讓出現(xiàn)cmd窗口,不然會(huì)一起被kill掉,這樣就達(dá)不到自動(dòng)重啟的目的。
??????另一個(gè)問題是當(dāng)出現(xiàn)java.lang.OutOfMemoryError錯(cuò)誤時(shí),jboss服務(wù)器好像并不是完全擋掉,一些不訪問數(shù)據(jù)庫的jsp頁面一樣可以訪問,所以ping.jsp最好是一個(gè)訪問了數(shù)據(jù)庫的文件。當(dāng)然,腳本中循環(huán)訪問該頁面,肯定會(huì)加重web服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),所以,循環(huán)的速度要根據(jù)您的具體情況做適當(dāng)?shù)恼{(diào)整。該腳本不至是針對(duì)jboss服務(wù)器和java.lang.OutOfMemoryError,作很少的修改,您可以應(yīng)用到其它服務(wù)器和檢查特定的web服務(wù)器出現(xiàn)的問題,然后做相應(yīng)的處理。
------------------------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.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
??????另一個(gè)問題是當(dāng)出現(xiàn)java.lang.OutOfMemoryError錯(cuò)誤時(shí),jboss服務(wù)器好像并不是完全擋掉,一些不訪問數(shù)據(jù)庫的jsp頁面一樣可以訪問,所以ping.jsp最好是一個(gè)訪問了數(shù)據(jù)庫的文件。當(dāng)然,腳本中循環(huán)訪問該頁面,肯定會(huì)加重web服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),所以,循環(huán)的速度要根據(jù)您的具體情況做適當(dāng)?shù)恼{(diào)整。該腳本不至是針對(duì)jboss服務(wù)器和java.lang.OutOfMemoryError,作很少的修改,您可以應(yīng)用到其它服務(wù)器和檢查特定的web服務(wù)器出現(xiàn)的問題,然后做相應(yīng)的處理。
------------------------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.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 舵手 閱讀(5085) 評(píng)論(6) 編輯 收藏