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程序设计有所帮助。

相关文章

  • JAVA匿名内部类(Anonymous Classes)的具体使用

    JAVA匿名内部类(Anonymous Classes)的具体使用

    本文主要介绍了JAVA匿名内部类,匿名内部类在我们JAVA程序员的日常工作中经常要用到,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 手把手带你实现第一个Mybatis程序

    手把手带你实现第一个Mybatis程序

    这篇文章主要介绍了mybatis实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-07-07
  • Java 十大排序算法之归并排序刨析

    Java 十大排序算法之归并排序刨析

    归并排序是采用分治法的一个非常典型的应用。先使每个子序列有序,再使子序列段间有序,也就是将已有的子序列合并,得到完全有序的序列;如果将两个有序表合并成一个有序表,称为二路归并
    2021-11-11
  • mybatis-plus自动生成代码的示例代码

    mybatis-plus自动生成代码的示例代码

    这篇文章主要介绍了mybatis-plus自动生成代码的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • SpringBoot后端接口的实现(看这一篇就够了)

    SpringBoot后端接口的实现(看这一篇就够了)

    这篇文章主要介绍了SpringBoot后端接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 深入解析Java反射之基础篇

    深入解析Java反射之基础篇

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,这篇文章主要给大家介绍了关于Java反射之基础篇的相关资料,需要的朋友可以参考下
    2021-11-11
  • Maven构建Hadoop项目的实践步骤

    Maven构建Hadoop项目的实践步骤

    本文主要介绍了Maven构建Hadoop项目的实践步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • SpringBoot 项目中创建线程池

    SpringBoot 项目中创建线程池

    这篇文章主要介绍了SpringBoot 项目中创建线程池,文章基于Spring Boot项目创建线程池ThreadPoolExecutor,需要的小伙伴可以参考一下
    2022-04-04
  • jmeter接口测试之使用rsa算法加密解密的代码

    jmeter接口测试之使用rsa算法加密解密的代码

    这篇文章主要介绍了jmeter接口测试-使用rsa加密解密算法,部分接口采用了rsa加密算法,我们的jmeter 也是可以直接拿来调用的,不需要开发配合去掉加密代码,需要的朋友可以参考下
    2022-03-03
  • Log4j按级别输出日志到不同文件的实现方法

    Log4j按级别输出日志到不同文件的实现方法

    下面小编就为大家带来一篇Log4j按级别输出日志到不同文件的实现方法。
    2016-11-11

最新评论