2011-08-25 33 views
0

是否可以更改Quartz調度程序如何確定當前時間?石英 - 改變當前時間的確定方式?

我正在開發一個基於服務的應用程序,包括負責提供對需求的當前時間(讓我們可以控制用於測試目的當前時間)時間服務。

我們的調度服務使用石英引擎蓋下。如果計劃在測試時尊重「正確的」當前時間,而不是由System.currentTimeMillis()或類似的時間確定的時間,那將會很不錯。

(我認爲答案this question可能表明,我不能這樣做,但我希望我是錯的...)

我使用Quartz 2.0.0版本。

回答

1

答案爲否你的問題,你不能這樣做。

Quartz的早期版本試圖解決這樣一個需求,但是需要確定當前時間的許多不同生命週期(實例化器等)的組件太多了,因此它所需的管道變得非常笨拙和它被放棄了。

+0

這對我來說是一個關鍵功能。沒有它,任何測試都是不可能的。我不會想象等待幾個小時和幾天才能看到單個測試通過的結果。 上面的解釋似乎相當於懶惰的糟糕藉口。抱歉。 –

3

的一種方法是定義自己的調度程序,它包裝(或繼承)的StdScheduler。在您的overrided scheduleJob(...)方法,你的包裝,實現包裝的供應Trigger,你,例如,覆蓋getStartTime()和/或getNextFireTime()方法返回所包裝的觸發器的返回值加上或減去一個代表你的「測試抵消一些間隔「反對」真實「時間的時間。