2012-06-25 42 views
6

我對Java Quartz並不是很熟悉,我們只是使用了每天安排的測試作業。對於我們的Struts2網絡應用程序,我們希望運行一天的不同時間的日常工作。這些作業應該處於持久狀態,以便即使由於服務器停機/應用程序失敗導致作業失敗,它們也應在服務器啓動後稍後重新執行。我也可以將作業的狀態/結果存儲在數據庫中,以監視作業。任何的意見都將會有幫助。JavaQuartz作業持久性

- 感謝

+0

我相信,石英具有所有這些功能。它當然可以使用持久性作業存儲。 – Thilo

回答

6

有可能在Quartz調度,且已存在與觸發器,我們通常稱之爲Misfire Instructions功能這就是文檔說些什麼

觸發器的另一個重要特性是它的「失火指令」。如果由於調度程序正在關閉而導致持續觸發器「遺漏」其觸發時間,或者Quartz的線程池中沒有可用的線程來執行作業,則會發生失火。不同的觸發類型可以使用不同的失火指令。默認情況下,他們使用「智能策略」指令 - 它具有基於觸發類型和配置的動態行爲。當調度程序啓動時,它會搜索任何發生故障的持續觸發器,然後根據各自配置的失火指令更新每個觸發器。當你開始在自己的項目中使用Quartz時,你應該讓自己熟悉在給定觸發器類型上定義的失火指令,並在他們的JavaDoc中進行解釋。關於失火指令的更多具體信息將在針對每種觸發類型的教程課程中給出。

關於工作的持久性石英自帶的機制幾構建和所有你需要設置作業存儲爲JDBCJobStore

我建議你去與Quartz scheduler document它很容易的,有很多教程和實例入手。

如果您沒有在應用程序中使用Spring沒有必要增加一些抽象和依賴的額外水平。

+0

在閱讀文檔之後,我發現jobStore負責跟蹤您給調度程序的所有「工作數據」:作業,觸發器,日曆等。是否可以將作業狀態存儲在jobStore中,即,結果/執行狀態.. –

+0

您將能夠獲得信息 –

+0

任何特定的課程編號。在文檔中我可以找到有關檢索調度程序作業狀態的詳細信息。 –

1

我們在Java的石英Job stores API。這將使數據庫中的數據保持有關作業信息。所以我想這會幫助你。您可以檢查this link以瞭解代碼和數據庫結構。

2

您可以使用石英結合Sprig batch

前者提供用於管理各種流的API(根據需要儘可能複雜),持久存儲作業狀態和api,以根據其執行狀態監視和重新運行作業。 另一個方便的庫是Spring Batch admin。它有Web控制檯和5分鐘指南。

石英作爲調度作業狀態的持久性是由Spring Batch的處理。它可以運行作爲獨立的Java應用程序,以及在網絡/應用容器(對我的Tomcat是足夠了)。

祝你好運!不管你提到

+0

對於使用Spring Batch的管理員,我是否需要使用彈簧框架,我現有的Struts2的web應用程序 –

+0

是的,你會需要它。 – aviad

+0

好,感謝您的建議。 –