??????開發的應用在測試過程中發生了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.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