Spring + Quartz重新安排或更新触发器?

我使用的是Spring 3.2Quartz 2.2

我的target Classmethod

 public class Producer { public void executeListener() { System.out.println(" Test Method . "); } } 

在我的spring applicationContext.xml

                 <!--  -->     

上面的代码正常工作, executeListener()连续执行,间隔为5 seconds ,启动延迟为10 sec

我试过在spring controller中更新触发器,

 @Controller public class SpringController { @Autowired org.springframework.scheduling.quartz.SchedulerFactoryBean myScheduler; @Autowired org.springframework.scheduling.quartz.SimpleTriggerFactoryBean oldTrigger; @RequestMapping(value="/reSheduleTrigger.html",method=RequestMethod.POST) public @ResponseBody String reSheduleTrigger(@RequestParam(value="triggerInSec") String triggerInSec ){ System.out.println("----------------- Changing the repeat interval request -----------"); // obtain a builder that would produce the trigger TriggerBuilder tb = oldTrigger.getObject().getTriggerBuilder(); Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build()); myScheduler.getObject().rescheduleJob(oldTrigger.getObject().getKey(),newTrigger ); return "success"; } } 

但我收到编译时错误Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build());

我的需要:

我想重新reshedule作业,以动态的2 sec间隔执行executeListener()方法。

谢谢。

请尝试以下方法之一:

 Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2)).build(); 

要么

 Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2)).build(); 

两者在语法上都是有效的。 看起来你的问题是Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build()); 是由不正确的包围引起的。 即build()之后不应该有一个额外的括号,因为它返回一个触发器。