2014-10-30 65 views
1

我正在使用使用java的Quartz調度程序。 即使預定的時間已經過去,它也不會拋出計劃程序異常,而是立即運行作業..例如,我確認了10月10日的作業以及今天10月30日的作業,如果我保存了這些信息,它現在會自動運行作業即使預定時間已過,石英作業也會發生火災

此外,我正在使用JobListener實現手動啓動作業,以便以後安排時間,以防其他作業在同一時間點運行。

請幫忙。

+2

如果您包含一些代碼,我們將能夠更好地爲您提供幫助。 – 2014-10-30 06:37:10

回答

0

做,只是增加了一個檢查時間計劃作業的預定時間是否超過了當前時間或不

Date startTime = cal.getTime(); 
//Check if the Scheduled time has passed or not 
Calendar currentCal = Calendar.getInstance(); 
Date currentTime = currentCal.getTime();  
if(!(currentTime.compareTo(startTime)>0)){ 
    scheduler.scheduleJob(job,trigger); 
} 
2

這種行爲在觸發失火指令配置之前。默認指令取決於觸發類型。您可以在scheduleBuilder中設置不點火指令:

Trigger trigger = newTrigger() 
    .withIdentity("myTrigger", "group1") 
    .startAt(new Date(2014,10,10)) 
    .withSchedule(withIntervalInMonths(1) 
     .withMisfireHandlingInstructionDoNothing()) 
    .build();