石英调度:使用DailyCalendar

问题描述:

我想按照以下计划安排石英作业:石英调度:使用DailyCalendar

作业每日运行,只应在上午9:30到下午6:00之间执行。我试图通过DailyCalendar来实现这一点。在这里我DailyCalendar是什么样子:

DailyCalendar dCal = new DailyCalendar(startTimeString, endTimeString); 
dCal.setTimeZone(TimeZone.getDefault()); 
dCal.setInvertTimeRange(true); 

哪里开始和结束时间字符串格式的HH:MM

接下来,我尝试安排这项工作:只要

Scheduler myscheduler = StdSchedulerFactory.getDefaultScheduler(); 
SimpleTrigger trigger = new SimpleTrigger(); 
myscheduler.addCalendar("todcal", cal, true, true); 
trigger.setName("TRIGGER " + alertName); 
trigger.setJobName(alertName); 
trigger.setJobGroup(alertName); 
trigger.setCalendarName("todcal"); 
logger.info("Adding TOD job"); 
myscheduler.scheduleJob(trigger); // line causing exception 
myscheduler.start(); 

scheduleJob被称为我看到以下异常:

Based on configured schedule, the given trigger will never fire. 

配置对我来说很好但我无法找到使用DailyCalendar的示例代码,所以我可能在这里错了。请帮助

您似乎没有在触发器上设置重复计数或重复间隔。所以它只会在当前时刻触发一次(因为你没有设置未来的开始时间),这可能恰好是日历排除时间 - 这就是为什么它会被计算为永远不会开火。

+0

感谢提示,提供重复计数和间隔后,我能够安排工作 – cyberizen 2011-03-17 05:53:41

作业每日运行,应该只在上午9:30到下午6:00执行 。

在该时间范围内应该多久执行一次工作?一旦?一小时一次?每10秒钟?

您需要为触发器定义重复间隔。看看setRepeatInterval(long repeatInterval)方法SimpleTrigger。它以毫秒为单位定义触发器重复的间隔。

+0

谢谢,在提供重复计数和间隔后,我能够安排工作 – cyberizen 2011-03-17 05:54:00