原理: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
原创博客:http://blog.csdn.net/qilin001cs