定期后台处理J2EE Web应用程序

时间:2015-10-02 19:46:43

标签: java tomcat java-ee servlets quartz-scheduler

我有一个托管在Tomcat服务器上的Java Web应用程序。此Web应用程序提供http请求。现在,我需要执行一个与数据库交互并在夜间执行某些任务的Java程序。这个Java程序需要在自己的线程上运行,并且不应该因为任何原因导致Tomcat崩溃/终止(显然会有try-catch块,但仍然如此)。

是的,我不想在后台经营一个cron工作。我希望Web应用程序在部署后的某个时间执行该程序。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

查看java Executor Service,它可以安排runnable在规定的时间定期运行:

intent.putExtra(String, String)

当然,你可以操纵延迟和时间。

但是,如果您最终可以使用JavaEE环境(tomee,wildfly,glasfish等),则可以使用EJB计划规范:

private ScheduledExecutorService executorService;

@PostConstruct
public void init() {
    executorService = Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(this::periodicJob, 1000, 1, TimeUnit.DAYS);
}

private void periodicJob() {
    //load from db, and process
}