石英调度:使用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的示例代码,所以我可能在这里错了。请帮助
答
您似乎没有在触发器上设置重复计数或重复间隔。所以它只会在当前时刻触发一次(因为你没有设置未来的开始时间),这可能恰好是日历排除时间 - 这就是为什么它会被计算为永远不会开火。
答
作业每日运行,应该只在上午9:30到下午6:00执行 。
在该时间范围内应该多久执行一次工作?一旦?一小时一次?每10秒钟?
您需要为触发器定义重复间隔。看看setRepeatInterval(long repeatInterval)
方法SimpleTrigger
。它以毫秒为单位定义触发器重复的间隔。
+0
谢谢,在提供重复计数和间隔后,我能够安排工作 – cyberizen 2011-03-17 05:54:00
感谢提示,提供重复计数和间隔后,我能够安排工作 – cyberizen 2011-03-17 05:53:41