tomcat启动时开启定时器pingIp地址

来源:互联网 发布:unity3d教程视频哪个好 编辑:程序博客网 时间:2024/06/06 17:43
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class test implements ServletContextListener {  
    
    private Timer timer = null;  
    //启动定时器
    @Override  
    public void contextInitialized(ServletContextEvent event) {  
        timer = new Timer(true);  
        event.getServletContext().log("定时器已启动");  
        timer.scheduleAtFixedRate(new TestTask2(), 7 * 1000, 10 *  1000); // 每小时执行一次run方法    测试5秒5 * 1000  
    }  
    
    //定时器销毁
    @Override  
    public void contextDestroyed(ServletContextEvent event) {  
        if (timer != null) {  
            timer.cancel();  
            event.getServletContext().log("定时器销毁");  
        }  
    }  
    
    //ping ip
    public  void pingIp(String ip) {
           Runtime runtime =Runtime.getRuntime(); // 获取当前程序的运行进对象
           Process process = null; //声明处理类对象
           String line = null; //返回行信息
           InputStream is = null; //输入流
           InputStreamReader isr = null;// 字节流
           BufferedReader br = null;
           boolean res = false;// 结果
           try {
           process =runtime.exec("ping " + ip); // PING
           is =process.getInputStream(); // 实例化输入流
           isr = new InputStreamReader(is);// 把输入流转换成字节流
           br = new BufferedReader(isr);// 从字节中读取文本
           while ((line= br.readLine()) != null) {
             if(line.contains("TTL")) {
              res= true;
              break;                   }
                                                    }
           is.close();
           isr.close();
           br.close();
           if (res){
             System.out.println("ping通  ...");
            } else{
             System.out.println("ping不通...");
            }
           } catch (IOException e) {
            System.out.println(e);
           runtime.exit(1);
           }
    }
}      
    


    //内部类
    class TestTask2 extends TimerTask {  
        
    protected final Log logger = LogFactory.getLog(getClass());  
    private static boolean isRunning = false;  
    
    String[] ip = {};
    
    @Override  
    public void run() {  
        // 是否整点  
        // Calendar c = Calendar.getInstance();  
        // if (C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))  
        if (!isRunning) {  
            isRunning = true;  
            logger.info("开始执行任务。");  
            
   /*         new test().pingIp[](ip);
*/            
            isRunning = false;  
            logger.info("任务执行结束。");  
 
        } else {  
            logger.info("上一次任务执行还未结束,本次任务不能执行。");  
        }
        
       
    }  

    
    

}


-----------------------------------------------------------------------

web.xml配置监听器


      <listener>  
           <listener-class>test.ServerInfoController</listener-class>   
    </listener> 
 

0 0
原创粉丝点击