import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Properties; /** * @describe:TomcatMonitor.java * * @date 2013-9-18 * @author 小C */ public class TomcatMonitor implements Runnable{ String procName="tomcat6.exe"; //进程名称 //String fullProcName="C:\\Tomcat6\\bin\\tomcat6.exe"; String fullProcName=""; //tomcat6.exe绝对物理地址 //String command="cmd.exe /c start"; String command=""; //系统命令 //String testHttp="http://127.0.0.1:8080"; String testHttp=""; //测试连接地址 int testIntervalTime=1;//测试连接间隔时间,单位为秒 int waitIntervalTime=2; //等待测试间隔时间,单位为秒 int testTotalCount=5; //测试连接总次数 Thread thread=null; public TomcatMonitor(){ InputStream in = TomcatMonitor.class.getResourceAsStream("config.properties"); Properties p = new Properties(); try { p.load(in); procName=p.getProperty("procName"); fullProcName=p.getProperty("fullProcName"); command=p.getProperty("command"); testHttp=p.getProperty("testHttp"); testIntervalTime=Integer.parseInt(p.getProperty("testIntervalTime")); waitIntervalTime=Integer.parseInt(p.getProperty("waitIntervalTime")); testTotalCount=Integer.parseInt(p.getProperty("testTotalCount")); System.out.println("初始化成功!"); } catch (IOException e) { e.printStackTrace(); } thread=new Thread(this); thread.start(); } public void run() { String[] cmd = {"tasklist"}; System.out.println("正在监控中..."); int testCount=0; while(true){ testCount=0; testCount++; boolean isrun=test(); System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!")); while(!isrun){ if(testCount>=testTotalCount)break; try { thread.sleep(testIntervalTime*1000); } catch (InterruptedException e) { e.printStackTrace(); } testCount++; System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!")); isrun=test(); } if(!isrun){ System.out.println("测试连接失败,正在重启tomcat"); try{ Process proc = Runtime.getRuntime().exec(cmd); BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); String string_Temp = in.readLine(); while (string_Temp != null) { if(string_Temp.toLowerCase().indexOf(procName)!=-1){ Runtime.getRuntime().exec("Taskkill /f /im "+procName); break; } string_Temp = in.readLine(); } thread.sleep(5000); Process p=Runtime.getRuntime().exec(command+" \"\" \""+fullProcName+"\""); //Process p=Runtime.getRuntime().exec("net start tomcat6"); System.out.println("重启tomcat成功"); }catch(Exception e){ e.printStackTrace(); } } try { thread.sleep(waitIntervalTime*1000); } catch (InterruptedException e) { e.printStackTrace(); } isrun=test(); } } public boolean test(){ URL url=null; try { url = new URL(testHttp); } catch (MalformedURLException e) { e.printStackTrace(); } try { URLConnection urlConn=url.openConnection(); urlConn.setReadTimeout(15000); BufferedReader reader = new BufferedReader(new InputStreamReader( urlConn.getInputStream())); //实例化输入流,并获取网页代码 String s; while ((s = reader.readLine()) != null) { return true; } } catch (Exception e) { return false; } return false; } public static void main(String[] args) throws Exception{ TomcatMonitor tm=new TomcatMonitor(); } }
最近下载更多
zzq834743788 LV2
2021年9月9日
lsq54365 LV14
2021年7月9日
byj1987 LV18
2021年7月8日
yohee2015 LV1
2021年1月24日
jamestao LV3
2020年5月28日
aaa2603389 LV2
2019年12月11日
neuwxr2015 LV8
2019年11月6日
wx19941125 LV12
2019年8月16日
0312wangchen LV26
2019年8月15日
lanbaobao LV6
2019年5月22日
最近浏览更多
炫瓶百事可乐 LV1
2022年12月1日
nurmamat001 LV2
2022年11月1日
豆子小兔子 LV9
2022年10月2日
ajie2123 LV4
2022年5月28日
ZDM-希童 LV1
2022年5月18日
17842711 LV1
2022年3月28日
zzq834743788 LV2
2021年9月9日
byj1987 LV18
2021年7月8日
yohee2015 LV1
2021年1月24日
lxl2270351925 LV4
2020年11月23日