2015-11-03 62 views
1

我試着立即用石英消防作業克倫,但不工作。 Obs:這個工作存在於我的數據庫中。立即用石英消防作業克倫

這是我的代碼,用於立即解僱的工作:

public class ExecuteJob { 

    public static void now(String TriggerKey) throws SchedulerException { 

     scheduler = StdSchedulerFactory.getDefaultScheduler(); 

     // retrieve the trigger 
     Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB)); 

     scheduler.triggerJob(oldTrigger.getJobKey()); 
    } 
} 
+0

你舒爾啓動調度程序('scheduler.start()'已經調用了沒有關機或待機命令已完成)? – flo

+0

所以triggerJob應該立即啓動我的工作,並在工作完成後關閉,不是嗎? 如果調用啓動方法,我的作業進入無限循環。即使在下面的調用關閉方法啓動方法。 –

+0

我想你甚至需要一個正在運行的調度程序,以便立即啓動。嘗試在觸發'triggerJob'之前調用'scheduler.start()'。 – flo

回答

0

的溶液中的終是:

public static void now(String TriggerKey) throws SchedulerException { 
    scheduler = StdSchedulerFactory.getDefaultScheduler(); 

    Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB)); 

    scheduler.start(); 
    scheduler.triggerJob(oldTrigger.getJobKey()); 
    } 
0

正如評論mentionend,你需要確保調度即使立即開始工作開始。

您可以使用isStarted()方法結合'isInStandbyMode()'和'isShutdown()'方法來檢查此方法。
請注意isStarted「只反映是否曾在此計劃程序上調用過start(),因此即使計劃程序當前處於待機模式或自關閉以來它也將返回true。

啓動調度程序使用start()方法:

public static void now(String TriggerKey) throws SchedulerException { 

    scheduler = StdSchedulerFactory.getDefaultScheduler(); 

    // retrieve the trigger 
    Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB)); 

    // start the scheduler 
    if (!scheduler.isStarted() || scheduler.isInStandbyMode() || scheduler.isShutdown()) 
     scheduler.start() 

    scheduler.triggerJob(oldTrigger.getJobKey()); 
}