Grails 数据库中的 Quartz cronExpression
Quartz cronExpression from database in Grails
我在我的 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)
上面代码中,Configuration是域,有两个字段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: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)
上面代码中,Configuration是域,有两个字段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