java quartz2.2.1怎么更新trigger,我根据官网的例子测试 执行无效,没报错!

Binas 发布于 2015/09/07 18:26
阅读 933
收藏 2
this.buildScheduler();

TriggerKey triggerKey = TriggerKey.triggerKey("test", TRIGGERGROUP);
CronTrigger trigger = (CronTrigger) this.scheduler.getTrigger(triggerKey);

trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();

this.scheduler.rescheduleJob(triggerKey, trigger);


我开始设置5s一次,现在用新的trigger替换旧的,为什么没效果?求指导

加载中
0
Steve
Steve

改过后的trigger没指向原始trigger,写成这样:

trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();

收工。

0
B
Binas

引用来自“Steve”的评论

改过后的trigger没指向原始trigger,写成这样:

trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();

收工。

java.lang.NullPointerException
at commons.QuartzManager.updateTrigger(QuartzManager.java:98)
at foo.Main.main(Main.java:20)
我按照你说的 回设,报错。空指针,
0
B
Binas

引用来自“Steve”的评论

改过后的trigger没指向原始trigger,写成这样:

trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();

收工。

这个不用拿到同一个scheduler吧?
0
B
Binas

引用来自“Steve”的评论

改过后的trigger没指向原始trigger,写成这样:

trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();

收工。

//获取一个调度器
private void buildScheduler() throws SchedulerException{
this.scheduler = this.schedulerFactory.getScheduler();
  

}

这个是我获取调度器的代码

0
Steve
Steve
一个工程一个调度器够了,你应该是其他地方的问题,这么更新没问题的。
0
B
Binas

引用来自“Steve”的评论

一个工程一个调度器够了,你应该是其他地方的问题,这么更新没问题的。
..一个任务开启了,我在外部想修改根本没法修改,
0
Steve
Steve
那问题很明显了,你新创建了一个StdSchedulerFactory或者Scheduler,而不是原先的Scheduler。
0
B
Binas

引用来自“Steve”的评论

那问题很明显了,你新创建了一个StdSchedulerFactory或者Scheduler,而不是原先的Scheduler。

大神,如何取到之前的Scheduler,

我用的方法StdSchedulerFactory.getScheduler(SchedulerName);返回null

0
Steve
Steve
写个工厂方法啊,保证是单例就好了。
0
B
Binas

引用来自“Steve”的评论

写个工厂方法啊,保证是单例就好了。
大神啊,我开启一个任务后,他自己线程去轮询了,我的主程序结束了,单例怎么有用呢?我的意思是 我突然想修改此时在运行的任务的时间表达式,没法改
返回顶部
顶部