Java 存在异常的quartz作业的数据持久性?
假设我安排了一个石英作业,该作业标记有PersistJobDataAfterExecutionAttribute。这意味着添加到JobDataMap的数据将在执行之间持久化。我想知道作业是否在异常情况下退出计划程序是否仍会保留作业的JobDataMap?如果作业用Java 存在异常的quartz作业的数据持久性?,java,quartz-scheduler,Java,Quartz Scheduler,假设我安排了一个石英作业,该作业标记有PersistJobDataAfterExecutionAttribute。这意味着添加到JobDataMap的数据将在执行之间持久化。我想知道作业是否在异常情况下退出计划程序是否仍会保留作业的JobDataMap?如果作业用PersistJobDataAfterExecutionAttribute注释,并且它在异常情况下退出,如果遇到恢复或故障转移情况,仍然会保留其JobDataMap,以重新执行它 例如,如果用户捕捉到异常并修改JobDataMap中的某
PersistJobDataAfterExecutionAttribute注释,并且它在异常情况下退出,如果遇到恢复
或故障转移
情况,仍然会保留其JobDataMap
,以重新执行它
例如,如果用户捕捉到异常并修改JobDataMap
中的某个内容,然后再次按如下方式重新刷新:
JobExecutionException e2 = new JobExecutionException(e);
// fix somekey in JobDataMap
dataMap.Put("sampleKey", "1");
// this job will refire immediately
e2.RefireImmediately = true;
在另一种情况下,如果用户捕获到异常并且不想运行与此作业相关联的所有触发器,则不会持久化JobDataMap。
e2.UnscheduleAllTriggers = true;
太好了,谢谢你的回答!但是,如果作业以不同于JobExecutionException的异常退出该怎么办?@MilenKovachev作业执行期间引发的任何异常都会作为SchedulerException
引发,它是JobExecutionException
的基类。因此,最终还是相同的JobExecutionException