2011-07-30 208 views
3

我開發了一個Spring批處理應用程序,它使用批處理/ shell腳本作爲可執行jar部署。它工作正常。Spring批處理應用程序與Spring批次管理集成

現在最近我讀了關於春季批量管理員應用程序發佈。根據他們的文檔,他們說你必須指向job-context.xml,這將允許管理Spring批處理應用程序從管理應用程序啓動,重新啓動並停止。現在我的問題是,我必須將我的job-context.xml保留在jar外面,或者確切的步驟是什麼,我對這個配置感到困惑。 有關這方面的任何見解都非常有用,而且我使用的是Spring批處理2.1。

感謝

回答

1

如果您的應用程序自定義類和部署爲一個可運行的jar和彈簧批次管理範圍內不包含,則無法啓動作業。您只能查看作業的狀態並「殺死」其在數據庫中的狀態。

如果你看一下http://static.springsource.org/spring-batch-admin/reference/reference.xhtml在配置上載節結束它規定

你可以看到在工作註冊表中的新條目(「測試工作」),這是 啓動的進程,因爲該應用程序可以參考 作業。 (喬布斯不屬於可發射出的過程被執行,但 用於其JobRepository同一個數據庫,所以他們表現出了 他們執行的UI。

如果你的工作是嚴格的配置工作,因爲您只使用XML來定義它們,並且不需要執行任何定製的物品讀取器/處理器/編寫器或其他自定義類,那麼您可以上傳作業XML並且它可以從管理站點內運行。如果您有自定義類,那麼根據我的經驗,您將不得不在您的Web應用程序中部署Spring批處理應用程序,然後上載包含要單獨運行的作業的XML。

我個人只是使​​用管理工具查看工作狀態,並通過一些自定義頁面向我提供統計信息。我離開了調度程序來運行這些工作,並且我不希望那些有權訪問管理站點的人在他們什麼都不知道的情況下開始工作。基本上,用它來給用戶一個溫暖的模糊,而不會讓他們把它弄糊塗。 (留給用戶找到你沒有考慮到的邊緣情況)

2

Spring Batch管理員應用程序是一個很好的參考實現,並且是高度可定製的。所有的接口實現都可以使用自己的類通過Spring DI來替換。 UI也模板驅動(FreeMarker的,我認爲),因此可以進行定製,以顯示相關信息,換膚等

我也有類似需要像你這樣的 - 包括在建的廣口瓶中的應用程序需要管理的功能。我不太喜歡這樣的事實,即我必須將我的作業打包爲.war文件。相反,我從Spring Batch Admin源中提取了相關配置,並創建了一個在文件系統中運行並在嵌入式Jetty服務器上運行的部署。

見截圖在這裏:https://github.com/regunathb/Trooper/wiki/Trooper-Batch-Web-Console

源,配置等可在這裏:https://github.com/regunathb/Trooper/tree/master/batch-core。這個項目實際上創建了一個.jar而不是.war