如何在Web工程中实现任务计划调度

http://tech.ddvip.com   2006年11月25日    社区交流

本文详细介绍如何在Web工程中实现任务计划调度

  private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public MyTask(ServletContext context) {
this.context = context;
}
public void run() {
Calendar cal = Calendar.getInstance();
if (!isRunning) {
if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {
isRunning = true;
context.log("开始执行指定任务");
//TODO 添加自定义的详细任务,以下只是示例
int i = 0;
while (i++ < 10) {
context.log("已完成任务的" + i + "/" + 10);
}
  isRunning = false;
context.log("指定任务执行结束");
}
} else {
context.log("上一次任务执行还未结束");
}
}

  上面代码中"//TODO……"之下四行是真正被调度执行的演示代码(在我的财政数据中心项目中就是报表计算过程),您可以换成自己希望执行的语句。

  到这儿,ServletContextListener和MyTask的代码都已完整了。最后一步就是把ServletContextListener部署到您的Web工程中去,在您工程的web.xml配置文件中加入如下三行:

  <listener>
<listener-class>com.test.ContextListener</listener-class>
</listener>

  当然,上面的com.test得换成您自己的包名了。保存web.xml文件后,把工程打包部署到Tomcat中即可。任务会在每晚12点至凌晨1点之间被执行,上面的代码会在Tomcat的日志文件中记录如下:

  2003-12-05 0:21:39 开始执行指定任务

  2003-12-05 0:21:39 已完成任务的1/10

  ……

  2003-12-05 0:21:39 已完成任务的10/10

  2003-12-05 0:21:39 指定任务执行结束

  以上代码在Tomcat 4.1.29以及Tomcat 5.0.16上调试通过。如果您需要完整代码,请通过nbDeveloper@hotmail.com与我联系。

责编:豆豆技术应用

正在加载评论...