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

 更新时间:2015年08月10日 15:27:53   作者:水熊宝宝  
这篇文章主要介绍了JAVA实现监测tomcat是否宕机及控制重启的方法,可实现有效的检测及控制tomcat服务器运行,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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("<" + 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();
      }
    }
}
}

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

相关文章

  • springcloud feign docker上无法通讯的问题及解决

    springcloud feign docker上无法通讯的问题及解决

    这篇文章主要介绍了springcloud feign docker上无法通讯的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实现合并图片的方法示例

    java实现合并图片的方法示例

    这篇文章主要介绍了java实现合并图片的方法,结合具体实例形式分析了java基于图片的读取、设置、生成等操作实现图片合并功能的相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • Spark 实现自定义加密的示例代码

    Spark 实现自定义加密的示例代码

    这篇文章主要介绍了Spark 实现自定义加密的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-07-07
  • Java语言的安装、配置、编译与运行过程

    Java语言的安装、配置、编译与运行过程

    本文详细介绍了如何在Windows、macOS和Linux操作系统上安装、配置Java开发环境(JDK),并展示了如何编写、编译和运行Java程序,同时,还提供了常见问题的解决方案,正确配置Java环境对Java开发至关重要,是进行Java编程的基础
    2025-02-02
  • 计算Java数组长度函数的方法以及代码分析

    计算Java数组长度函数的方法以及代码分析

    在本篇内容里,小编给大家整理了关于计算Java数组长度函数的方法以及代码分析内容,有兴趣的朋友么可以学习参考下。
    2022-11-11
  • Java线程的相关方法详细解析

    Java线程的相关方法详细解析

    以下是对Java线程的相关方法进行了详细的介绍,需要的朋友可以过来参考下
    2013-09-09
  • java图像处理之倒角距离变换

    java图像处理之倒角距离变换

    这篇文章主要为大家详细介绍了java图像处理之倒角距离变换的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java基于阻塞队列实现生产者消费者模型示例详解

    Java基于阻塞队列实现生产者消费者模型示例详解

    这篇文章主要介绍了Java基于阻塞队列实现生产者消费者模型,阻塞队列的特点就是阻塞两个字,阻塞功能使得生产者和消费者两端的能力得以平衡,当有任何一端速度过快时,阻塞队列便会把过快的速度降下来,感兴趣的朋友可以参考下
    2023-12-12
  • Java实现局域网聊天室功能(私聊、群聊)

    Java实现局域网聊天室功能(私聊、群聊)

    这篇文章主要为大家详细介绍了Java实现局域网聊天室功能,包括私聊、群聊,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Java代理模式实例分析

    Java代理模式实例分析

    这篇文章主要介绍了Java代理模式,结合实例形式对比分析了java代理模式的使用方法与相关操作技巧,需要的朋友可以参考下
    2019-07-07

最新评论