Java 存在异常的quartz作业的数据持久性?

Java 存在异常的quartz作业的数据持久性?,java,quartz-scheduler,Java,Quartz Scheduler,假设我安排了一个石英作业,该作业标记有PersistJobDataAfterExecutionAttribute。这意味着添加到JobDataMap的数据将在执行之间持久化。我想知道作业是否在异常情况下退出计划程序是否仍会保留作业的JobDataMap?如果作业用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