java crontriggerbean_java – 使用JobStoreTX为石英聚类配置CronTriggerFactoryBean
我們正在使用Quartz 2.1.5;我們設置了以下屬性:
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.CloudscapeDelegate
org.quartz.jobStore.useProperties = true
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000
以及以下bean配置:
當我們跑步時,我們得到一個錯誤說
nested exception is org.quartz.JobPersistenceException: Couldn't store trigger 'sftpTransfers.abcRequestsJobTrigger' for 'sftpTransfers.abcRequestsJob'
job:JobDataMap values must be Strings when the 'useProperties' property is set.
Key of offending value: jobDetail
[See nested exception: java.io.IOException: JobDataMap values must be Strings when the 'useProperties' property is set. Key of offending value: jobDetail]
是否有另一種配置CronTriggerFactoryBean的方法,而不是使用對JobDetailFactoryBean引用的引用,或者只將字符串作為屬性的其他觸發器工廠bean?這一切在我們想要使用群集之前都有效,但是現在要將作業寫入blob,他們只希望持久化字符串.那沒關系,我怎么做到的?
解決方法:
請參考:
問題:
當使用org.quartz.jobStore.useProperties = true時,Spring Framework和Quartz會一起發生這種情況,這意味著所有Job數據都作為屬性而不是序列化的Java對象存儲在數據庫中.
錯誤是因為Spring類CronTriggerFactoryBean存儲對JobDataMap中JobDetail的引用,該引用不能表示為一組屬性.
CronTriggerFactoryBean將jobDetail設置為觸發器的jobDataMap.
解決方法:
擴展CronTriggerFactoryBean并從jobDataMap中刪除JobDetail.
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailAwareTrigger;
public class PersistableCronTriggerFactoryBean extends CronTriggerFactoryBean {
@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();
//Remove the JobDetail element
getJobDataMap().remove(JobDetailAwareTrigger.JOB_DETAIL_KEY);
}
}
標簽:java,spring,quartz-scheduler
來源: https://codeday.me/bug/20190620/1243528.html
總結
以上是生活随笔為你收集整理的java crontriggerbean_java – 使用JobStoreTX为石英聚类配置CronTriggerFactoryBean的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 5. 蓝牙 mesh,蓝
- 下一篇: mysql groupby 拼接_mys