記錄、分享

          檢測Tomcat運(yùn)行狀態(tài),自動(dòng)重啟

          檢測Tomcat運(yùn)行狀態(tài),自動(dòng)重啟

          http://blog.csdn.net/huangjl2000w/article/details/6338997

          先是主程序:


          import java.io.BufferedReader;
          import java.io.FileReader;
          import java.net.URL;
          import java.net.URLConnection;
          import java.util.Date;

          public class CheckTomcat {
           private static String tomcatroot="";
           private static String monitorurl="";
           private static void checkTomcatIsAlive(String myurl) throws NullPointerException {
            String s;
            boolean isTomcatAlive = false;
            java.io.BufferedReader in;
            try {
             System.out.println(">>>>>>檢測URL:"+myurl);
             URL url = new URL(myurl);
             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) {// 如果能夠讀取到頁面則證明可用,tomcat正常,否則繼續(xù)后面的重啟tomcat操作。
               return;
               }
              }
             in.close();
            }catch (Exception ex) {
             //ex.printStackTrace();
             System.out.println("*************該URL有誤或不可訪問!");
            }
            
            /*if (isTomcatAlive) {
             System.out.println("<" + new Date()+ "> Tomcat is alive but not response!");
             stopTomcat();
            }*/
            RunTomcat runt=new RunTomcat();
            runt.startTomcat(tomcatroot);
           }
           
           /*public static void stopTomcat() {
            try {
             //java.lang.Process p = java.lang.Runtime.getRuntime().exec("net stop /"Apache Tomcat/"");
             java.lang.Process p = java.lang.Runtime.getRuntime().exec(tomcatroot+"bin//shutdown.bat");
             java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
             String s;
             String t = "Using JRE_HOME";
             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 main(String[] args) {
            System.out.println("********************************************************");
            System.out.println("====本程序自動(dòng)檢測Tomcat運(yùn)行狀況,必要時(shí)自動(dòng)重啟Tomcat。====");
            System.out.println("********************************************************");
            
            init_config();
            if(monitorurl.equals(""))monitorurl="http://localhost:8080/ExchangeWeb/checkTomcat/monitor.jsp";
            if(tomcatroot.equals(""))tomcatroot="F://tomcat-6.0.20//";
            if(!tomcatroot.endsWith("//"))tomcatroot+="http://";
            while (true) {
             try {
              String random="?random="+Math.random() * 65535;//=====處理數(shù)據(jù)緩存問題======
              CheckTomcat.checkTomcatIsAlive(monitorurl+random);
              Thread.sleep(5000);
              System.out.println("========================checking at <"+new Date()+">");
             } catch (Exception ex) {
              ex.printStackTrace();
             }
            }
           }
           
           static private void init_config() {
            try{
             CheckTomcat me=new CheckTomcat();
             String maindir=me.getClass().getResource("/").toURI().getPath();
             System.out.println(">>>>>>配置文件目錄:"+maindir);
             String sLine;
             String filename=maindir+"config.xml";
             BufferedReader buffReader = new BufferedReader(new FileReader(filename));
             while((sLine = buffReader.readLine())!=null)
             { 
              sLine = sLine.trim();
              if(sLine.trim()!="" && !sLine.equals("")){
               if(sLine.toLowerCase().startsWith("tomcatroot")){
                int npos=sLine.indexOf("tomcatroot");
                npos+="tomcatroot".length();
                tomcatroot=sLine.substring(npos).trim();
                if(tomcatroot.startsWith("="))tomcatroot=tomcatroot.substring(1);
               }
               else if(sLine.toLowerCase().startsWith("monitorurl")){
                int npos=sLine.indexOf("monitorurl");
                npos+="monitorurl".length();
                monitorurl=sLine.substring(npos).trim();
                if(monitorurl.startsWith("="))monitorurl=monitorurl.substring(1);
               }
              }
             }
             buffReader=null;
            }catch(Exception e){
             e.printStackTrace();
             System.out.println("********************************************************");
             System.out.println("====讀取配置文件失敗!系統(tǒng)無法運(yùn)行,請(qǐng)與供應(yīng)商聯(lián)系。====");
             System.out.println("********************************************************");
             System.exit(0);
            }
           }
          }

           

          再是自動(dòng)重啟Tomcat線程類:

          import java.util.Date;


          public class RunTomcat extends Thread {

           private static String tomcatroot="";
           
           public void startTomcat(String root) {
            this.tomcatroot=root;
            
            System.out.println(">>>>>>Tomcat即將啟動(dòng)。。。");
            System.out.println(">>>>>>Tomcat根目錄:"+tomcatroot);
            try {
             //java.lang.Process p = java.lang.Runtime.getRuntime().exec("net stop /"Apache Tomcat/"");
             java.lang.Process p = java.lang.Runtime.getRuntime().exec(tomcatroot+"bin//shutdown.bat");
            } catch (Exception e) {
              e.printStackTrace();
            }
            
            try {
             Thread.sleep(3000);//等待shutdown結(jié)束
             //RunTomcat me=new RunTomcat();
             //String maindir=me.getClass().getResource("/").toURI().getPath();
             //java.lang.Process p = java.lang.Runtime.getRuntime().exec(maindir+"checkTomcat.bat");
             java.lang.Process p = java.lang.Runtime.getRuntime().exec(tomcatroot+"bin//startup.bat");
             java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
             
             /*String s;
             boolean restart = false;
             String t = "Server startup in";
             while ((s = in.readLine()) != null) {
              System.out.println(s);
              if (s.indexOf(t) != -1) {
               restart = true;
               break;
              }
             }*/
             System.out.println(">>>>>>Tomcat start at <" + new Date() + ">");
            } catch (Exception e) {
             e.printStackTrace();
            }
           }

          }

          接著是檢測tomcat是否活動(dòng)monitor.jsp文件:

          <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
          <%
          String path = request.getContextPath();
          String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
          out.println("path=" + path + "<br>");
          out.println("basePath=" + basePath + "<br>");
          out.println("ok<br>");
          %>

           

          然后是config.xml配置文件:

          tomcatroot=F:/tomcat-6.0.20/
          monitorurl=http://localhost:8080/ExchangeWeb/checkTomcat/monitor.jsp

           

          最后是checkTomcat.bat批處理文件:

          @echo off

          rem=========第一步:配置下面的JAVA_HOME為JDK目錄==========#
          @set JAVA_HOME=C:/Program Files/Java/jdk1.6.0_14

          rem=========第二步:配置下面的CATALINA_HOME為Tomcat目錄==========#
          @set CATALINA_HOME=F:/tomcat-6.0.20

          @set PATH=%JAVA_HOME%/bin/;
          @set CLASSPATH=%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/lib/servlet-api.jar;%CATALINA_HOME%/lib/jsp-api.jar;


          java CheckTomcat

           

          測試時(shí),只要雙擊執(zhí)行checkTomcat.bat文件即可。

          posted on 2012-05-24 10:44 張生 閱讀(8870) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 呼伦贝尔市| 平武县| 潮安县| 璧山县| 务川| 南部县| 肃宁县| 锦屏县| 榆林市| 包头市| 禄劝| 喀喇沁旗| 衡水市| 海兴县| 中山市| 乐业县| 寻乌县| 资中县| 上高县| 长岛县| 舒兰市| 大埔区| 昭平县| 乐东| 陆丰市| 林口县| 碌曲县| 县级市| 马鞍山市| 和静县| 顺义区| 巴东县| 平定县| 婺源县| 靖边县| 兴文县| 绥宁县| 安顺市| 中牟县| 菏泽市| 伊春市|