2014-01-09 138 views
1

我一直在努力將Quartz代碼從1.8.6改爲2.x.x.正如你可能知道的,在Quartz 2中,API有很多變化。我試圖解決的問題之一是安排工作。此前,該代碼是這樣的:將Quartz代碼遷移到2.2.x

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。那裏沒有什麼驚喜

我試圖找出如何使石英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

我也堅持相同的問題請幫助 – Krishna

回答