web服务器定制执行任务

package org.wlkj.servlet;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class TaskManager implements ServletContextListener {

/**
* 每天的毫秒数
*/
public static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
/**
* 一周内的毫秒数
*/
public static final long PERIOD_WEEK = PERIOD_DAY * 7;
/**
* 无延迟
*/
public static final long NO_DELAY = 0;
/**
* 定时器
*/
private Timer timer;
/**
* 在Web应用启动时初始化任务
*/
public void contextDestroyed(ServletContextEvent arg0) {
  // TODO Auto-generated method stub
  
  timer.cancel(); // 定时器销毁
}
public void contextInitialized(ServletContextEvent arg0) {
  // TODO Auto-generated method stub
  
  //定义定时器
  
  timer = new Timer("数据库表备份",true);
  
  //启动备份任务,每月(4个星期)执行一次
  timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_DAY);
  // timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);
}
}


package org.wlkj.servlet;
import java.util.TimerTask;
public class BackUpTableTask extends TimerTask {
private static boolean isRunning = false;

@Override
public void run() {
  // TODO Auto-generated method stub
  if (!isRunning) {
   isRunning = true;
   System.out.println(": 开始执行任务..."); //开始任务
   //working add what you want to do
   System.out.println(": 执行任务完成..."); //任务完成
   isRunning = false;
  } else {
   System.out.println("上一次任务执行还未结束..."); //上一次任务执行还未结束
  }
}
}

web.xml文件
<listener>
<listener-class>org.wlkj.servlet.TaskManager</listener-class>
<description>要定期执行的任务</description>
</listener>

呵呵!

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