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