天天看点

当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