当Tomcat被杀死时,Quartz当前正在执行作业

时间:2013-10-02 14:45:57

标签: java tomcat quartz-scheduler

我不清楚的事情。假设我在一天中随机安排了工作,每个工作需要30分钟才能运行。假设我有五个这样的工作正在运行而且Tomcat被杀死了。当我使用我的应用程序启动Tomcat时,是否重新启动作业,或者当前正在运行的作业因为已经解雇而丢失了?

2 个答案:

答案 0 :(得分:14)

简短回答,默认情况下,当前正在运行的作业被视为已解雇且无法恢复

.. 您可以在构建作业(JobDetail)时设置 requestRecovery 属性,以告知Quartz在发生崩溃时恢复正在运行的作业,即“硬关机”

引用页面底部的官方文档here

  

RequestsRecovery - 如果作业“请求恢复”,并且它正在执行   调度程序的“硬关闭”(即它正在运行的进程)   在崩溃中,或机器关闭),然后重新执行   当调度程序再次启动时。在这种情况下,   JobExecutionContext.isRecovering()方法将返回true。

所以你可以做例如:

import static org.quartz.JobBuilder.*;

...

JobDetail job = newJob(MyJob.class)
           .withIdentity("myJob", "group1")
           .requestRecovery(true) //This is the guy!
           .build();

...

答案 1 :(得分:0)

Tomcat不关心你的工作。您的任务是在关闭Web应用程序时正确终止作业。