[我們正在使用JBoss 6,但我相信這個問題適用於任何JaveEE應用服務器]如何在Java應用程序服務器上執行長時間運行的操作?
我們有一個應用程序服務器,其中(除其他事項外)應該進行一些真正的長時間運行的任務(可需要幾個小時)。
該任務是通過調用某個EJB函數觸發的,但到目前爲止,整個操作都在此函數調用中運行,因此在EJB事務中運行。這種事務超時很快,並且延長事務超時似乎並不是正確的解決方案。
整體任務可以很容易地分解爲加載/工作/存儲部分,所以似乎並沒有嚴格要求整個時間都有一個事務。
所以問題是:什麼是「正確」的方式來做到這一點?
感謝您的指點石英。我在哪裏可以找到關於此背後架構的更多信息?特別是,如何使用Quartz作業避免交易問題? – stmoebius
你可以瀏覽夸脫網站本身的教程http://quartz-scheduler.org/documentation/quartz-2.x/tutorials/。對於事務,我們所做的只是將任務提交給Quartz,並且它將異步運行任務,以便我們可以將響應發回給用戶,然後定期刷新頁面以檢查更新。我相信你的情況也可以類似。 –