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();
	}
	

}
最近下载更多
yohee2015 LV11月24日
星星
jamestao LV32020年5月28日
星星星星星星
aaa2603389 LV22019年12月11日
星星星星
neuwxr2015 LV62019年11月6日
月亮星星星星
wx19941125 LV112019年8月16日
月亮月亮星星星星星星
0312wangchen LV252019年8月15日
太阳月亮月亮星星
lanbaobao LV62019年5月22日
月亮星星星星
oldfox LV172018年10月10日
太阳星星
yr940115 LV122018年9月6日
月亮月亮月亮
琴酒撒吗 LV12018年7月25日
星星
最近浏览更多
yohee2015 LV11月24日
星星
lxl2270351925 LV42020年11月23日
月亮
奋青员 LV122020年7月6日
月亮月亮月亮
wokao1232020年5月29日
暂无贡献等级
penghao_110 LV22020年5月29日
星星星星
jamestao LV32020年5月28日
星星星星星星
gideon LV32020年5月9日
星星星星星星
lsq54365 LV122020年5月7日
月亮月亮月亮
DavidZeng1 LV22020年4月9日
星星星星
rexyang2020年2月15日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友