我一直在努力将Quartz代码从1.8.6更改为2.x.x.您可能知道,在Quartz 2中,有很多API更改。我正在努力解决的一个问题是安排工作。以前,代码看起来像这样:
private JobSchedule scheduleExistingJob(JobSchedule schedule) throws SchedulerException
{
JobInfo jobInfo = schedule.getJobInfo();
Trigger trigger = QuartzUtils.createTriggerFromJobSchedule(schedule);
trigger.setJobName(jobInfo.getName());
trigger.setJobGroup(jobInfo.getGroup());
DateTime nextRunDateTime = new DateTime(m_scheduler.scheduleJob(trigger));
JobSchedule newSched = updateScheduleNextRunDateTime(schedule, nextRunDateTime);
return newSched;
}
使用此旧代码时,会出现两个语法错误:一个位于trigger.setJobName(jobInfo.getName());
,另一个位于trigger.setJobGroup(jobInfo.getGroup());
两人都抱怨The method setJobName(String) is undefined for the type Trigger
。这并不奇怪。
我正在试图弄清楚如何在Quartz 2.x中实现这种兼容性,这是我到目前为止所提出的:
private JobSchedule scheduleExistingJob(JobSchedule schedule) throws SchedulerException
{
JobInfo jobInfo = schedule.getJobInfo();
JobDetail job = newJob()
.withIdentity(jobInfo.getName(), jobInfo.getGroup())
.build();
Trigger trigger = QuartzUtils.createTriggerFromJobSchedule(schedule);
Trigger t = newTrigger()
.forJob(job)
.build();
DateTime nextRunDateTime = new DateTime(m_scheduler.scheduleJob(trigger));
JobSchedule newSched = updateScheduleNextRunDateTime(schedule, nextRunDateTime);
return newSched;
}
我无法弄清楚如何将作业信息/组与触发器合并。似乎在新的API中我不能指定通用触发器,它必须是Cron或Simple。我也可能在思考一切。
感谢任何帮助。
答案 0 :(得分:0)