检测tomcat服务状态,并能自动重启的代码

原理很简单。 在机器上做一个测试的文件。如果我们的程序能够读取到这个文件,则证明运行正常
  1. import java.net.URL;
  2. import java.net.URLConnection;
  3. import java.util.Date;
  4. /**
  5.  * 
  6.  * @author 赵学庆,Java世纪网(java2000.net)
  7.  *
  8.  */
  9. public class Detector {
  10.   private static void keepTomcatAlive() throws NullPointerException {
  11.     String s;
  12.     String t = new String("tomcat5.exe");
  13.     boolean isTomcatAlive = false;
  14.     java.io.BufferedReader in;
  15.     try {
  16.       URL url = new URL("http://localhost/heartbeat.htm");
  17.       URLConnection con = url.openConnection();
  18.       in = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream()));
  19.       con.setConnectTimeout(1000);
  20.       con.setReadTimeout(4000);
  21.       while ((s = in.readLine()) != null) {
  22.         if (s.length() > 0) {
  23.           // 如果能够读取到页面则证明可用
  24.           return;
  25.         }
  26.       }
  27.       in.close();
  28.     } catch (Exception ex) {
  29.     }
  30.     try {
  31.       java.lang.Process p = java.lang.Runtime.getRuntime().exec("tasklist");
  32.       in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
  33.       while ((s = in.readLine()) != null) {
  34.         if (s.startsWith(t)) {
  35.           isTomcatAlive = true;
  36.           break;
  37.         }
  38.       }
  39.       in.close();
  40.     } catch (Exception e) {
  41.       e.printStackTrace();
  42.     }
  43.     if (isTomcatAlive) {
  44.       System.out.println("<" + new Date() + "> Tomcat is alive but not response!");
  45.       stopTomcat();
  46.     }
  47.     startTomcat();
  48.   }
  49.   public static void stopTomcat() {
  50.     try {
  51.       java.lang.Process p = java.lang.Runtime.getRuntime().exec("net stop /"Apache Tomcat/"");
  52.       java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
  53.       String s;
  54.       String t = "成功停止";
  55.       boolean restart = false;
  56.       while ((s = in.readLine()) != null) {
  57.         if (s.indexOf(t) != -1) {
  58.           restart = true;
  59.           break;
  60.         }
  61.       }
  62.       System.out.println("<" + new Date() + "> Tomcat is stop " + (restart ? "OK" : "ERROR"));
  63.     } catch (Exception e) {
  64.       e.printStackTrace();
  65.     }
  66.   }
  67.   public static void startTomcat() {
  68.     try {
  69.       java.lang.Process p = java.lang.Runtime.getRuntime().exec("net stop /"Apache Tomcat/"");
  70.     } catch (Exception e) {
  71.       e.printStackTrace();
  72.     }
  73.     try {
  74.       java.lang.Process p = java.lang.Runtime.getRuntime().exec("net start /"Apache Tomcat/"");
  75.       java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
  76.       String s;
  77.       String t = "启动成功";
  78.       boolean restart = false;
  79.       while ((s = in.readLine()) != null) {
  80.         if (s.indexOf(t) != -1) {
  81.           restart = true;
  82.           break;
  83.         }
  84.       }
  85.       System.out.println("<" + new Date() + "> Tomcat is start " + (restart ? "OK" : "ERROR"));
  86.     } catch (Exception e) {
  87.       e.printStackTrace();
  88.     }
  89.   }
  90.   public static void main(String[] args) {
  91.     while (true) {
  92.       try {
  93.         Detector.keepTomcatAlive();
  94.         Thread.sleep(30000);
  95.       } catch (Exception ex) {
  96.       }
  97.     }
  98.   }
  99. }

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值