日期:2014-05-20  浏览次数:20892 次

struts框架实现定时任务
以下是我在网上找到的代码:
Java code

第一步:创建一个任务管理类,实现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(); // 定时器销毁    
 }                                
}                                
                                
第二步:创建一个时间任务类                                

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中添加一个监听器
  <listener>
  <listener-class>***.TaskManager</listener-class>
  <description>要定期执行的任务</description>
 </listener>                                


问题:
1.public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;
其中DateUtils.MILLIS_IN_DAY提示找不到,谁有相关的包,麻烦提供一下地址,谢谢
2.这个放到struts框架里却不能自动执行任务,哪位帮我看看什么地方有问题,再次谢谢。



------解决方案--------------------
org.apache.commons.lang.time.DateUtils