Java 终止Tomcat时当前正在执行的作业
有些事我不清楚。假设我每天都有随机安排的作业,每个作业需要30分钟才能运行。假设我有五份这样的工作,Tomcat被杀了。当我用我的应用程序启动Tomcat时,作业是否会重新启动,或者当前正在运行的作业是否会因为已经启动而丢失?Tomcat不关心您的作业。关闭webapp时,您的任务是在webapp中正确终止作业。简短回答,默认情况下,当前运行的作业被视为已启动,不会恢复 ..但您可以在构建作业(JobDetail)时设置requestRecovery属性,以告知Quartz在崩溃时恢复正在运行的作业,也称为“硬关机” 引用页面底部的官方文件: 请求恢复-如果作业“请求恢复”,并且它在恢复期间执行 调度程序的“硬关闭”(即它正在运行的进程 在崩溃或机器关闭的情况下),然后重新执行 当计划程序再次启动时。在这种情况下 JobExecutionContext.isRecovering()方法将返回true 因此,您可以执行以下操作,例如:Java 终止Tomcat时当前正在执行的作业,java,tomcat,quartz-scheduler,Java,Tomcat,Quartz Scheduler,有些事我不清楚。假设我每天都有随机安排的作业,每个作业需要30分钟才能运行。假设我有五份这样的工作,Tomcat被杀了。当我用我的应用程序启动Tomcat时,作业是否会重新启动,或者当前正在运行的作业是否会因为已经启动而丢失?Tomcat不关心您的作业。关闭webapp时,您的任务是在webapp中正确终止作业。简短回答,默认情况下,当前运行的作业被视为已启动,不会恢复 ..但您可以在构建作业(JobDetail)时设置requestRecovery属性,以告知Quartz在崩溃时恢复正在运行的
import static org.quartz.JobBuilder.*;
...
JobDetail job = newJob(MyJob.class)
.withIdentity("myJob", "group1")
.requestRecovery(true) //This is the guy!
.build();
...
我所追求的是Quartz是否重试当前正在执行的作业,还是将它们丢弃,这意味着Quartz无法从jvm崩溃中完全恢复,因为用户无法“正确终止作业”