原理:JAVA --> 發送http請求通路目前localhost:8080或者localhost:8080/xx/index.jsp檔案------->是否可以通路?可以通路 System.out.println("200");不可已通路或者出現異常System.out.println("500")
bat 指令接收java列印結果 并且把值指派給 變量 ----->對變量判斷 ?如果是 200 則轉到繼續JAVA執行請求 ,如果是500 則執行重新開機tomcat操作
解決問題:
java.lang.OutOfMemoryError: PermGen space 錯誤,
雖然這隻是一個下下策...
JAVA源碼:
package com.love;
import java.net.HttpURLConnection;
import java.net.URL;
public class TomcatMonitor{
public static void main(String[] args) {
try {
URL url = new URL("http://localhost:8080/Demo1/login");
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
conn.setConnectTimeout(3*1000);//設定請求逾時時間
conn.setReadTimeout(3*1000);//設定讀取逾時時間
conn.connect();
int code =conn.getResponseCode();
System.out.println(code);
} catch (Exception e) {
System.out.println("500");
}
}
}
對了寫完成代碼以後,如果是存在包名,可以直接封裝成一個JAR檔案, 在bat中使用指令> java -jar TomcatMonitor.jar 來運作擷取結果
也可以直接使用java的類編譯檔案 TomcatMonitor.class 對應的指令為 > java TomcatMonitor
在使用該2種檔案的時候;其中第一種不存在受到系統變量CLASSPATH 的影響,而第二種相對要依賴于 系統環境變量中的CLASSPATH
是以在使用的時候 ,請在您的伺服器上測試是否能直接運作 java TomcatMonitor ? 如果不能直接執行.class檔案提示:找不到類路徑,建議直接打包成一個JAR來使用
Bat批處理源碼:
@echo off
REM @author qiyulin
REM @date 2016 03 08
:echo
cls
echo welcome to tomcat monitor
echo @author qiyulin
echo @date 2016 03 18
:restart
set "java_output="
setlocal enableDelayedExpansion
for /f "delims=" %%J in ('java -jar TomcatMonitor.jar') do (
set "java_output=!java_output! %%J"
)
endlocal & set java_output=%java_output%
:delleft
if "%java_output:~0,1%"==" " set java_output=%java_output:~1%&&goto delleft
echo Permgen space %java_output% is Available;
:if
if %java_output% EQU 200 (
ping 127.0.0.1 -n 20
) else (
net stop Tomcat服務名
ping 127.0.0.1 -n 20
net start Tomcat服務名
)
goto restart
:end
pause
popd
注意代碼: Tomcat服務名要更換, TomcatMonitor.jar看是否在同意目錄下,如果改名以後需更改bat腳本
原創部落格:http://blog.csdn.net/qilin001cs