Quartz2のドキュメントによると
RequestsRecovery-ジョブが「リカバリを要求」し、スケジューラの「ハードシャットダウン」時に実行されている場合(つまり、クラッシュ内で実行されているプロセス、またはマシンがシャットダウンされている場合)、ジョブは再実行されます。スケジューラーが再開されたとき。この場合、JobExecutionContext.isRecovering()メソッドはtrueを返します。
Spring3は、Quartz1.xとQuartz2.xの両方をサポートしています。Quartz 1.xを使用する場合、JobDetail
Beanを作成するために次の構成を使用する必要があります。
<bean id="ldapSynch" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.edfx.adb.scheduling.job.LDAPSynchronizer" />
<property name="requestsRecovery" value="true" />
</bean>
内部的にorg.springframework.scheduling.quartz.JobDetailBean
拡張org.quartz.JobDetail
され、Quartz1.xorg.quartz.JobDetail
にはセッターがありpublic void setRequestsRecovery(boolean shouldRecover)
ます。
ただし、Spring3のQuartz 2.x実装を使用すると、前述の構成は次のように変更されます。
<bean id="ldapSynch" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.edfx.adb.scheduling.job.LDAPSynchronizer" />
<property name="requestsRecovery" value="true" />
</bean>
また、Quartz 2.xにはそのようなorg.quartz.JobDetail
クラスはありません。代わりに、それはでありinterface
、最終的にorg.springframework.scheduling.quartz.JobDetailFactoryBean
はパラメーターを取り<property name="requestsRecovery" value="true" />
ません。
parameter
これをQuartzのスケジューラーに渡すにはどうすればよいでしょうか。