天天看點

當Tomcat無法通路,使用bat批處理實作重新開機

原理: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