我目前正在研究一個需要導入數據並做一些處理的Web應用程序。這可能需要一些時間(可能在「數分鐘」範圍內,一旦數據集增長),所以我們在後臺運行它 - 現在是顯示前端狀態的時間,而不是拖尾日誌文件:)輪詢Java EE後臺任務狀態 - 如何?
前端使用Angular,連接到通過JPA執行持久性的EJB中的REST端點(JAX-RS)調用服務。在JBoss EAP 6.4/AS 7.5(EE6)中運行。標準的東西,但這是我第一次與Java EE打交道。
關於查詢狀態,定期輪詢REST端點是否正常 - 我們不需要像websockets那樣的花哨東西。不過,我們確實需要支持多個後臺作業,以及由runstate(運行/完成/錯誤),進度和錯誤列表組成的信息。
所以,我現在有兩個問題:
1)是否有推出比調用EJB @Asynchronous方法後臺任務的更合適的方式?
2)我有哪些選項可以跟蹤後臺任務,哪些最適合?
我的第一個想法是保留一個HashMap,但是那個看起來像過多的手動(並且看起來很脆弱)的代碼具有併發性和生命週期問題 - 我不喜歡重新發明輪子。這種安全的選擇似乎是JPA堅持它,但對於不穩定的狀態信息來說似乎有點笨拙。
我顯然沒有面臨這些問題的第一人,但我的谷歌福似乎缺乏在使用@Asynchronous
此刻:)
你需要爲你的過程是什麼樣跟蹤信息的? –
我希望能夠將後臺任務與自定義狀態類的實例關聯起來 - 在帖子中提到了必要的信息:) – snemarch