2014-01-22 29 views
0

我正在編寫JEE JAX-RS應用程序,並將ScheduleExpressions作爲在數據庫中配置的cron表達式(* 1 * * *)。 在我的後期構造中,我創建了定時器服務來定期運行作業。如何從ScheduleExpression查找下一個執行時間(需要幫助)

現在我想公開一個休息URI來列出計劃今天運行的所有計時器預定作業。

目前我正在使用以下方法查找下一個計劃時間。 代碼: EJBCronTrigger trigger = new EJBCronTrigger(scheduleExpression); 日期fireTimeAfter = trigger.getFireTimeAfter(new Date());

任何人都可以建議任何其他更好或推薦的方式來從ScheduleExpression中查找下一個計劃時間。有沒有任何類型的圖書館存在。

+0

如果你調用'TimerService.createTimer',你可以使用'Timer.getNextTimeout'嗎? –

+0

是的,我可以,但我想將此作爲其餘資源公開,可以找到在給定日期運行的計劃作業。謝謝您的回答。 – nrkkalyan

+0

我發現了另一種使用Spring的方法,在Spring框架中檢查CronSequenceGenerator。它提供了一個方法next(Date)。構建CronSequenceGenerator對象必須通過Crontab表達式。 – nrkkalyan

回答

0
public String checkTimerStatus() { 
      Timer timer = null; 
      Collection<Timer> timers = service.getTimers(); 
      Iterator<Timer> iterator = timers.iterator(); 
      while (iterator.hasNext()) { 
       timer = iterator.next(); 
       return ("Timer will expire after " + 
         timer.getTimeRemaining() + " milliseconds."); 
      } 
      return ("No timer found"); 
     }