java在web任务应用:定时执行任务

转自: http://dev.yesky.com/355/3407855.shtml

在WEB应用下实现定时任务的简便方法

  在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务:

  第一步:创建一个任务管理类,实现ServletContextListener 接口

以下是引用片段:   
public class TaskManager implements ServletContextListener {    
/**   
  * 每天的毫秒数   
  */   
public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;    
/**   
  * 一周内的毫秒数   
  */   
public static final long PERIOD_WEEK = PERIOD_DAY * 7;    
/**   
  * 无延迟   
  */   
public static final long NO_DELAY = 0;    
/**   
  * 定时器   
  */   
private Timer timer;    
/**   
  * 在Web应用启动时初始化任务   
  */   
public void contextInitialized(ServletContextEvent event) {    
        //定义定时器    
  timer = new Timer("数据库表备份",true);     
  //启动备份任务,每月(4个星期)执行一次    
  timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);    
//  timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);    
}    
/**   
  * 在Web应用结束时停止任务   
  */   
public void contextDestroyed(ServletContextEvent event) {    
  timer.cancel(); // 定时器销毁    
}    
}   



java 代码
以下是引用片段:   
public class BackUpTableTask extends TimerTask {     
        private static Log log = LogFactory.getLog(BackUpTableTask.class);     
        private static boolean isRunning = false;     
       public void run() {     
                  if (!isRunning) {     
                              isRunning = true;     
                               log.debug("开始执行任务..."); //开始任务     
                                  //working  add what you want to do     
                              log.debug("执行任务完成..."); //任务完成     
                              isRunning = false;     
                    } else {     
                             log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束     
                    }     
       }     
}   


  第三步:在web中添加一个监听器

xml 代码


以下是引用片段:   
  
 <listener>   
  <listener-class>***.TaskManager</listener-class>   
  <description>要定期执行的任务</description>   
 </listener> 
 




  那么在web服务器启动的时候,任务也被启动,并且会周期性的执行

第二步:创建一个时间任务类

你可能感兴趣的:(java,Web,应用服务器,xml,quartz)