您的位置:首页 > 编程语言 > Java开发

java深度探究--java监控程序思路--Listener,Timer监控--定时任务

2014-01-08 12:24 477 查看
使用listener,来完成监控程序和定时任务

1、web.xml中配置要执行的类

<listener>
    <listener-class>com.epg.control.listener.TestListener</listener-class>
  </listener>


2、TestListener类

package com.epg.control.listener;

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

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

/**
 * 测试监控
 * @author anjl
 *
 */
public class TestListener implements ServletContextListener {

  
  public TestListener() {

  }

  public void contextInitialized(ServletContextEvent arg0) {
      Auto();
  }

  public void contextDestroyed(ServletContextEvent arg0) {

  }

  /**
   * 自动监控方法
   */
  public void Auto() {
    
    //程序启动后,5秒监控,只跑一次
    Timer time = new Timer();
    time.schedule(new TimerTask() {
      public void run() {
        try{
          listenMethod();
        }catch(Exception e){
          System.out.println("监控出现异常");
        }
       }
    }, 5000);
    
    //每周六早上8点5分运行,之后每隔一周运行一次
    Timer timer = new Timer();
    Calendar c = Calendar.getInstance();
    c.set(Calendar.DAY_OF_WEEK, 7);//每周六
    c.set(Calendar.HOUR_OF_DAY, 8);//每天8:00运行
    c.set(Calendar.MINUTE, 5);//5分
    c.set(Calendar.SECOND, 0);//秒设置为0
    timer.schedule(new TimerTask() {
      public void run() {
        try{
          listenMethod();
        }catch(Exception e){
          System.out.println("监控出现异常");
        }
      }
    }, c.getTime(), 7*24 * 3600 * 1000);

  }
  
  public void listenMethod(){
    System.out.println("我在监控!!!");
  }

}


解释:

TestListener类要implements ServletContextListener

在方法contextInitialized中添加监控方法
public void contextInitialized(ServletContextEvent arg0) {
Auto ();
}
在方法 Auto ()中写监控程序,通过timer来设定执行时间

注意点:

1、run方法中要捕获异常,否则抛异常给Timer后,Timer会停止
2、如果指定执行时间已经过了工程部署时间,例如你在周三指定周二执行,那么timer以你部署工程的时间为准来定时执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: