grails的quartz插件怎么动态获得cronExpression
dmpx123456
2010-04-01
在用grails的quartz插件,要求cronExpression的值是可以由用户动态改变的。要怎么做?
在class DailyJob中通过读数据库获取cronExpression的值,但是如果类不重新加载,就不会做查询。所以execute()里面用的还是以前的cronExpression,有什么办法可以动态获得cronExpression的值呢? 感谢回帖! |
|
wusema
2010-04-02
不应该在DailyJob里获取cronExpression的值,应该在controller或service获得,然后在controller或service使用
def userChangeCorn={ DailyJob.schedule(String cronExpression, Map params?) } 这样用户更改cronExpression的值的时候就会开始以新的cronExpression计划DailyJob任务了 参考 http://grails.org/plugin/quartz Dynamic Jobs Scheduling |
|
dmpx123456
2010-04-02
首先感谢回答!
但是我这样做了之后为什么会抛出异常?我刚学grails好多不知道的 ![]() Error 500: Executing action [updateSchedule] of controller [ProjectController] caused exception: groovy.lang.MissingMethodException: No signature of method: static DailyBuildJob.schedule() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [0/10 * * * * ?, [project:282]] Servlet: grails URI: /CJS_2_ControlCenter/grails/project/updateSchedule.dispatch Exception Message: No signature of method: static DailyBuildJob.schedule() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [0/10 * * * * ?, [project:282]] Caused by: Executing action [updateSchedule] of controller [ProjectController] caused exception: groovy.lang.MissingMethodException: No signature of method: static DailyBuildJob.schedule() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [0/10 * * * * ?, [project:282]] Class: ProjectController At Line: [63] |
|
wusema
2010-04-02
参数错误,没有params的话直接用[:]代替就好
|
|
dmpx123456
2010-04-02
貌似我更新了cronExpression以后,以前的cronExpression并没有失效。好像是有2个DailyJob的实例同时再跑,一个用的是以前的cronExpression,一个用的是刚更新过的cronExpression。有什么办法把以前的那个delete掉呢?
|
|
wusema
2010-04-02
DailyJob.removeJob() |
|
dmpx123456
2010-04-09
这个方法能不能说的具体点呢。我用了这个方法,它把Job都给删掉了,后面设置的cronExpression也没有作用了。我想做的只是使前一个cronExpression失效,并不想删掉后面的Job。这个方法能不能加什么参数指定是哪个Job,或者有没有什么方法delete cron Trigger?
def concurrent = false 找到了上面的试了一下,也是在class DailyJob重新加载时才生效,不可行啊 ![]() 对了有没有关于grails quartz插件的API,有的话麻烦给说一下,不胜感激。 |
|
wusema
2010-04-10
顺序乱了,是要先移除旧的,然后执行新的
DailyJob.scheduleJob(cronExpression,[:]) API的话,直接解压插件看源码了 |
|
dmpx123456
2010-04-12
DailyJob.scheduleJob(cronExpression,[:]) 这里的参数对吗?我试了之后一直出错No signature of method。 但是改用下面的 DailyJob.schedule(cronExpression,[:]) 即使我先removeJob()还是会出现org.quartz.JobPersistenceException: The job (myServices.DailyJob) referenced by the trigger does not exist. 难道要我跑sql脚本创建table?如果这样的话removeJob()还会不会删除Job? |
|
wusema
2010-04-12
是我弄錯了,顺序为
DailyJob.removeJob() DailyJob.scheduleJob() DailyJob.schedule(cronExpression,[:]) |