import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
/**
 * @describe:TomcatMonitor.java
 * 
 * @date 2013-9-18
 * @author 小C
 */
public class TomcatMonitor implements Runnable{
    String procName="tomcat6.exe"; //进程名称
    //String fullProcName="C:\\Tomcat6\\bin\\tomcat6.exe";
    String fullProcName=""; //tomcat6.exe绝对物理地址
    //String command="cmd.exe /c start";
    String command=""; //系统命令
    //String testHttp="http://127.0.0.1:8080";
    String testHttp="";  //测试连接地址
    int testIntervalTime=1;//测试连接间隔时间,单位为秒
    int waitIntervalTime=2; //等待测试间隔时间,单位为秒
    int testTotalCount=5; //测试连接总次数
    
    Thread thread=null;
    
	public TomcatMonitor(){
		InputStream in = TomcatMonitor.class.getResourceAsStream("config.properties");
		Properties p = new Properties();
		try {
			p.load(in);
			procName=p.getProperty("procName");
			fullProcName=p.getProperty("fullProcName");
			command=p.getProperty("command");
			testHttp=p.getProperty("testHttp");
			testIntervalTime=Integer.parseInt(p.getProperty("testIntervalTime"));
			waitIntervalTime=Integer.parseInt(p.getProperty("waitIntervalTime"));
			testTotalCount=Integer.parseInt(p.getProperty("testTotalCount"));
			
			System.out.println("初始化成功!");
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		thread=new Thread(this);
		thread.start();		
	}
	
	public void run() {
        String[] cmd = {"tasklist"};
        System.out.println("正在监控中...");   
        int testCount=0;
		while(true){
			testCount=0;
			testCount++;			
            boolean isrun=test();
            System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!"));	            
            while(!isrun){
            	if(testCount>=testTotalCount)break;
            	try {
					thread.sleep(testIntervalTime*1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				testCount++;
				System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!"));            	
            	isrun=test();
            }
            
            if(!isrun){
            	System.out.println("测试连接失败,正在重启tomcat");
            	try{        	        
        	        Process proc = Runtime.getRuntime().exec(cmd);
        	        BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));                        
        	        String string_Temp = in.readLine();
        	        while (string_Temp != null)
        	        {
    	                if(string_Temp.toLowerCase().indexOf(procName)!=-1){
    	                    Runtime.getRuntime().exec("Taskkill /f /im "+procName);
    	                    break;
    	                }
    	                string_Temp = in.readLine();
        	        }
        	        thread.sleep(5000);

        	        Process p=Runtime.getRuntime().exec(command+" \"\" \""+fullProcName+"\""); 
        	        //Process p=Runtime.getRuntime().exec("net start tomcat6");	
        	        System.out.println("重启tomcat成功");
        		}catch(Exception e){
        			e.printStackTrace();
        		}            	
            }
			
            try {
				thread.sleep(waitIntervalTime*1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
            
            isrun=test();
		}		
	}
	
	public boolean test(){
		
		URL url=null;		
		try {
			url = new URL(testHttp);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		try {
			URLConnection urlConn=url.openConnection();
			urlConn.setReadTimeout(15000);
			BufferedReader reader = new BufferedReader(new InputStreamReader( urlConn.getInputStream()));            //实例化输入流,并获取网页代码
				   String s;                                       
				   while ((s = reader.readLine()) != null) {
				      return true;   
				   }				   		
		} catch (Exception e) {
          return false;
		}
		return false;
	}
	
	
	public static void main(String[] args) throws Exception{
		TomcatMonitor tm=new TomcatMonitor();
	}
	

}
最近下载更多
zzq834743788  LV2 2021年9月9日
lsq54365  LV14 2021年7月9日
byj1987  LV18 2021年7月8日
yohee2015  LV1 2021年1月24日
jamestao  LV3 2020年5月28日
aaa2603389  LV2 2019年12月11日
neuwxr2015  LV8 2019年11月6日
wx19941125  LV12 2019年8月16日
0312wangchen  LV26 2019年8月15日
lanbaobao  LV6 2019年5月22日
最近浏览更多
炫瓶百事可乐  LV1 2022年12月1日
nurmamat001  LV2 2022年11月1日
豆子小兔子  LV9 2022年10月2日
ajie2123  LV4 2022年5月28日
ZDM-希童  LV1 2022年5月18日
17842711  LV1 2022年3月28日
zzq834743788  LV2 2021年9月9日
byj1987  LV18 2021年7月8日
yohee2015  LV1 2021年1月24日
lxl2270351925  LV4 2020年11月23日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友