quartz.properties没有加载在grails app的嵌入式码头中

时间:2016-02-04 13:54:52

标签: grails quartz-scheduler

我在QuartzConfig中启用了jdbcStore

quartz {
    jdbcStore = true
    autoStartup = true
}

并在grails-app/conf目录中提供了quartz.properties:

...
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
...

问题是,当我在grails rA的本地开发环境中运行grails时,这些属性会被忽略,我会得到一个异常:

Caused by: org.quartz.JobPersistenceException: Couldn't store trigger 'RebillJobSimpleTrigger' for 'com.payment.rebill.RebillJob' job:Bad value for type long : \xaced00057.....
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1241)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport$5.execute(JobStoreSupport.java:1147)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSupport.java:3670)
    at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:242)

在实时环境中一切正常,但是我无法在嵌入式码头中运行该项目。

精化:

抛出异常是因为我的自定义quartz.properties被忽略(因此使用StdJDBCDelegate代替PostgreSQLDelegate,它无法从DB读取BLOB)。

我使用石英grails插件版本0.4.2,其中包含空grails-app/conf/quartz.properties,我认为有一些类加载器问题会加载这个空文件而不是我自己的quartz.properties文件。

在插件中查看属性文件在QuartzGrailsPlugin.groovy的spring bean中配置:

quartzScheduler(SchedulerFactoryBean) {
            configLocation = "classpath:quartz.properties"
            ...

(有一些spring bean builder magic将"classpath:quartz.properties" String转换为spring的Resource类,因为SchedulerFactoryBean的configLocation属性属于Resource类型。

当我在SchedulerFactoryBean的第554行调试初始化时,尽管我的quartz.properties不为空,但configLocation导致空文件。

当我手动更改石英弹簧bean以从不同位置读取文件时,一切正常:

quartzScheduler(SchedulerFactoryBean) {
            configLocation = "classpath:data/quartz.properties"
            ...

但是我无法改变石英插件本身。你知道如何在本地解决这个问题吗?

我使用grails版本2.1.2

0 个答案:

没有答案