如何在Tomcat中安排任务 [英] How to schedule a task in Tomcat

查看:225
本文介绍了如何在Tomcat中安排任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Tomcat中部署了一个Web应用程序。我有一组代码,用于检查数据库中的某些数据,然后根据该数据向用户发送邮件。有人可以建议如何在Tomcat中安排这个。

I have a web application deployed in Tomcat. I have a set of code in it, that checks database for certain data and then sends a mail to users depending on that data. Can somebody suggest how to schedule this in Tomcat.

推荐答案

实际上,在Tomcat中安排任务的最佳方法是使用ScheduledExecutorService。 TimeTask不应该在J2E应用程序中使用,这不是一个好习惯。

Actually, the best way to schedule task in Tomcat is to use ScheduledExecutorService. TimeTask should not be used in J2E applications, this is not a good practice.

以正确的方式示例:

创建一个与你的控制器不同的包(servlet包),并在这个新包上创建一个新的java类,例如:

create a package different that you controller one (servlet package), and create a new java class on this new package as example :

// your package
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class BackgroundJobManager implements ServletContextListener {

private ScheduledExecutorService scheduler;

@Override
public void contextInitialized(ServletContextEvent event) {
    scheduler = Executors.newSingleThreadScheduledExecutor();
   // scheduler.scheduleAtFixedRate(new DailyJob(), 0, 1, TimeUnit.DAYS);
    scheduler.scheduleAtFixedRate(new HourlyJob(), 0, 1, TimeUnit.HOURS);
   //scheduler.scheduleAtFixedRate(new MinJob(), 0, 1, TimeUnit.MINUTES);
   // scheduler.scheduleAtFixedRate(new SecJob(), 0, 15, TimeUnit.SECONDS);
}

@Override
public void contextDestroyed(ServletContextEvent event) {
    scheduler.shutdownNow();
 }

}

之后你可以创建其他java class(每个时间表一个)如下:

After that you can create other java class (one per schedule) as follow :

public class HourlyJob implements Runnable {

@Override
public void run() {
    // Do your hourly job here.
    System.out.println("Job trigged by scheduler");
  }
}

享受:)

这篇关于如何在Tomcat中安排任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆