dil*_*ram 18 java tomcat scheduling
我在Tomcat中部署了一个Web应用程序.我有一组代码,它检查数据库中的某些数据,然后根据该数据向用户发送邮件.有人可以建议如何在Tomcat中安排这个.
小智 19
实际上,在Tomcat中安排任务的最佳方法是使用ScheduledExecutorService.不应在J2E应用程序中使用TimeTask,这不是一个好习惯.
正确的例子:
创建一个与您的控制器不同的包(servlet包),并在这个新包上创建一个新的java类,例如:
// 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();
}
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以创建其他java类(每个计划一个),如下所示:
public class HourlyJob implements Runnable {
@Override
public void run() {
// Do your hourly job here.
System.out.println("Job trigged by scheduler");
}
}
Run Code Online (Sandbox Code Playgroud)
请享用 :)
| 归档时间: |
|
| 查看次数: |
26952 次 |
| 最近记录: |