博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA监测tomcat是否宕机,控制重启
阅读量:6905 次
发布时间:2019-06-27

本文共 2860 字,大约阅读时间需要 9 分钟。

hot3.png

判断tomcat是否宕机,如果宕机,则进行重启。java实现。

Detector.java:

import java.net.URL;import java.net.URLConnection;import java.util.Date;/*** * @author james**/public class Detector { private static void keepTomcatAlive() throws NullPointerException {String s;String t = new String("tomcat6");boolean isTomcatAlive = false;java.io.BufferedReader in; System.setProperty("sun.net.client.defaultConnectTimeout", "8000");   System.setProperty("sun.net.client.defaultReadTimeout", "10000");   try {	URL url = new URL("http://localhost:8080/test.jsp");	URLConnection con = url.openConnection();	in = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream()));	con.setConnectTimeout(1000);	con.setReadTimeout(4000);	while ((s = in.readLine()) != null) {	if (s.length() > 0) {		//accessed page successful.		return;		}	}	in.close();} catch (Exception ex) {          //ex.printStackTrace();	} try {	java.lang.Process p = java.lang.Runtime.getRuntime().exec("ps -aux");	in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));	while ((s = in.readLine()) != null) {	if (s.startsWith(t)) {		isTomcatAlive = true;		break;		}	}	in.close();}catch (Exception e) {	e.printStackTrace();} if (isTomcatAlive) {	System.out.println("<" + new Date() + "> Tomcat is alive but not response!");	stopTomcat();} 	startTomcat();} public static void stopTomcat() {	try {		java.lang.Process p = java.lang.Runtime.getRuntime().exec("/etc/init.d/tomcat6 stop");		java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));		String s;		String t = "Stopping";		boolean restart = false;		while ((s = in.readLine()) != null) {			if (s.indexOf(t) != -1) {			restart = true;			break;			}		}		System.out.println("<" + new Date() + "> Tomcat is stop " + (restart ? "OK" : "ERROR"));	} catch (Exception e) {  		e.printStackTrace();	}} public static void startTomcat() {	try {		java.lang.Process p = java.lang.Runtime.getRuntime().exec("/etc/init.d/tomcat6 start");		java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));		String s;		String t = "Starting";		boolean restart = false;		while ((s = in.readLine()) != null) {		if (s.indexOf(t) != -1) {			restart = true;			break;			}		}		System.out.println("<" + new Date() + "> Tomcat is start " + (restart ? "OK" : "ERROR"));	} catch (Exception e) {		e.printStackTrace();	}} private static void debug(String msg){	System.out.println("Debug::: "+msg);} public static void main(String[] args) {	while (true) {			try {                                   debug("Detect agin <"+new Date()+">");				Detector.keepTomcatAlive();                                debug("Sleep...");				Thread.sleep(30000);			} catch (Exception ex) {                           ex.printStackTrace();			}		}} }

转载于:https://my.oschina.net/waterbear/blog/149801

你可能感兴趣的文章
读取Mysql的一种的方式
查看>>
信息安全--仿射密码
查看>>
深入浅出javascript(二)函数和this对象
查看>>
Form 对象
查看>>
Codeforces Round #533(Div. 2) C.Ayoub and Lost Array
查看>>
HDU - 3966-Aragorn' Story(树链剖分+线段树)
查看>>
Linux基础第五章 进程控制
查看>>
[转载]孤儿进程与僵尸进程[总结]
查看>>
jquery事件机制扩展,jquery鼠标右键事件。
查看>>
windows phone Image checkbox
查看>>
[pycharm]远程调试服务器项目
查看>>
7 Java NIO Selector-翻译
查看>>
rvm 添加 Path
查看>>
All Users in SharePoint Site Custom Webpart
查看>>
pip下载源更换为豆瓣源
查看>>
Java多线程之先行发生原则(happens-before)
查看>>
React Render props
查看>>
自动类型转换
查看>>
C# winfrom 当前程序内存读取和控制
查看>>
电话号码分身
查看>>