java 宕机监控_JAVA实现监测tomcat是否宕机及控制重启的方法

本文介绍了Java实现监测Tomcat是否宕机及控制重启的方法。通过访问特定URL判断Tomcat是否响应,若未响应则进一步检查其是否存活,若存活但无响应则停止并重启Tomcat,还给出了具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了JAVA实现监测tomcat是否宕机及控制重启的方法。分享给大家供大家参考。具体如下:

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(" 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(" 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(" 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 ");

Detector.keepTomcatAlive();

debug("Sleep...");

Thread.sleep(30000);

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

}

希望本文所述对大家的java程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值