我在grails:2.4.4应用程序中添加了quartz:1.0.2插件。
我要实现的是设置cronExpression值表单数据库。
我已经从grails-command创建了一个名为myBatch的作业。在myBatchJob.groovy的触发器块中,如果我尝试从数据库中获取任何数据,则不允许这样做。
我也尝试在BootStrap.groovy中添加以下内容
def quartzScheduler
def init = { servletContext ->
CronTrigger trigger = quartzScheduler.getTrigger("myBatchJobTrigger","DEFAULT")
def conf_expr = Configuration.findByConfigKey("batch_job_config_expression").configValue
trigger.setCronExpression '${conf_expr}'
quartzScheduler.rescheduleJob (trigger.getName(), trigger.getGroup(), trigger)
}
但这给了我这个错误
groovy.lang.MissingMethodException: No signature of method: org.quartz.impl.StdScheduler.getTrigger() is applicable for argument types: (java.lang.String, java.lang.String)
在上面的代码中,配置是具有两个字段configKey和configValue的域。而且我也导入了
org.quartz.CronTrigger
但没有运气。请帮忙!
最佳答案
从作业文件中删除triggers closure
。然后,您可以在BootStrap.groovy
中从数据库中获取cron expression
并使用动态计划方法来计划您的工作。例如,您的BootStrap.groovy init
闭包可以像下面这样
Configuration config = Configuration.findByConfigKey("batch_job_config_expression")
MyBatchJob.schedule(config.configValue)
有关动态调度的更多信息http://grails-plugins.github.io/grails-quartz/guide/triggers.html
关于grails - Quartz cronExpression来自Grails中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32578868/