我有一个托管在Tomcat服务器上的Java Web应用程序。此Web应用程序提供http请求。现在,我需要执行一个与数据库交互并在夜间执行某些任务的Java程序。这个Java程序需要在自己的线程上运行,并且不应该因为任何原因导致Tomcat崩溃/终止(显然会有try-catch块,但仍然如此)。
是的,我不想在后台经营一个cron工作。我希望Web应用程序在部署后的某个时间执行该程序。
我该怎么做?
答案 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
}