• Tomcat检测程序


    import java.net.*;
    import java.io.*;

    public class Tomcat   extends Thread {
    int listenPort=80; //要检测的端口号
    String url = "";
    String str="";
    public void setstr(){
            str="GET / HTTP/1.0\r\n";
    str+="\r\n";
    str+="Accept: image/gif, image/x-xbitmap, image/jpeg, image peg, application nd.ms-powerpoint, application nd.ms-excel, application/msword, application/x-shockwave-flash, */* \r\n";
    str+="Accept-Language: zh-cn \r\n";
    str+="Accept-Encoding: gzip, deflate\r\n";
    str+="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) \r\n";
    str+="Connection: Keep-Alive \r\n";
    }

      public void setListenPort(int listenPort) {
        this.listenPort = listenPort;
      }

      public int getListenPort() {
        return listenPort;
      }

      public Tomcat(String url) {
        this.url = url;
      }

      //判断是否停止监听
      boolean isStopListen = false;

      //执行一个线程,线成不断的判断tomat是否停止,如果停止,则关闭tomcat
      //然后isTomcatStop=true,sleep(60000)
      public void run() {
        while (!isStopListen) {
          if (!this.isConnectionTomcat()) {
            try {
              this.closeTomcat();
              this.sleep(10000);
              this.closeTomcat();
              this.sleep(10000);
          this.closeTomcat();
              this.sleep(10000);
              new RunTomcat();
              this.sleep(30000);
            }
            catch (Exception ex) {
              ex.printStackTrace();
            }
          }
          else {
            try {
              this.sleep(30000);
            }
            catch (InterruptedException ex1) {
              ex1.printStackTrace();
            }
          }
        }
      }

    //关闭tomcat
      public void closeTomcat() throws Exception {
        Process process = Runtime.getRuntime().exec("shutdown.bat");
        BufferedReader bufferedReader = new BufferedReader(new
            InputStreamReader(process.getInputStream()));

      }

      //判断是否连接到80断口
      public boolean isConnectionTomcat() {
        Socket so = null;
    setstr();
        try {
          so = new Socket("localhost", listenPort);
      so.setSoTimeout(5000);
      OutputStream out=so.getOutputStream();
      out.write(str.getBytes());
      out.flush();
      InputStream in=so.getInputStream();
          byte[] receiveByte=new byte[1000];
      int num=in.read(receiveByte);
      //System.out.println(new String(receiveByte,0,num));
      if (num<=5)throw new Exception("读取失败");
      so.close();
        }
        catch (Exception ex) {
          System.out.println("工作可能有异常"+listenPort+ex);
      try{
      this.sleep(1000);
      so = new Socket("localhost", listenPort);
      so.setSoTimeout(5000);
      OutputStream out=so.getOutputStream();
      out.write(str.getBytes());
      out.flush();
      InputStream in=so.getInputStream();
      byte[] receiveByte=new byte[1000];
      int num=in.read(receiveByte);
      if (num<=5)throw new Exception("读取失败");
      //System.out.println(new String(receiveByte,0,num));
      so.close();
      }catch(Exception e){
      System.out.println("工作出现异常!!!!!!!");
      return false;
      }
        }
        finally {
          try {
            if (so != null) {
              so.close();
            }
          }
          catch (IOException ex1) {
            ex1.printStackTrace();
          }
        }
        System.out.println("正常启动");
        return true;
      }

      //打开tomcat
      public class RunTomcat
          extends Thread {
        public RunTomcat() {
          this.start();
        }

        public void run() {
          try {
            Process process = Runtime.getRuntime().exec("startup.bat");
            BufferedReader bufferedReader = new BufferedReader(new
                InputStreamReader(process.getInputStream()));
          }
          catch (IOException ex) {
            ex.printStackTrace();
          }

        }
      }

    //主线程不断循环,发现isTomcatStop=true,启动tomcat
      public static void main(String args[]) {
        if(args.length==0){
         System.out.println("命令行为:java Tomcat port -请指定监听端口" );
         return;
        }
        Tomcat s = new Tomcat("");
        try {
          s.setListenPort(Integer.parseInt(args[0]));
        }
        catch (NumberFormatException ex) {
          System.out.println("输入的第一个参数必须为端口号,端口号为tomcat服务端口号(https为:443,http为:80)。必须好必须唯一个小于65535的正整数");
        }
        s.start();
      }
    }
  • 相关阅读:
    android布局
    Windows7 32/64位系统搭建Cocos2d-x及Android交叉编译环境
    第12章 文件管理
    第十章 多处理器和实时调度
    C语言实现多级反馈队列调度算法
    C++实现操作系统调度算法(FSFS,SJF,RR,多级反馈队列算法)
    多级反馈队列调度算法
    第九章 单处理器调度
    第六章 并发:死锁与饥饿
    第七章 内存管理
  • 原文地址:https://www.cnblogs.com/harbin1900/p/8480970.html
Copyright © 2020-2023  润新知