1
一段時間我遇到的一個開放性問題 - 如果您有EJB有狀態或無狀態bean,或者可能有一個直接的servlet進程可能會在生產系統上開始運行很長的時間,並且如何有效地爲管理員/人員添加一個手動'kill switch'來專門殺死該線程/進程?EJB或Servlet - 如何添加一個'kill switch'來強制進程/線程停止
一段時間我遇到的一個開放性問題 - 如果您有EJB有狀態或無狀態bean,或者可能有一個直接的servlet進程可能會在生產系統上開始運行很長的時間,並且如何有效地爲管理員/人員添加一個手動'kill switch'來專門殺死該線程/進程?EJB或Servlet - 如何添加一個'kill switch'來強制進程/線程停止
您不能或至少不應該直接干擾應用程序服務器線程。因此,在Java EE環境中,「kill switch」對我來說確實不合適。
但是我明白你有問題,但寧願建議採取異步的方法,你把工作分解成更小的單位。
我是用EJB定時器做的,對結果很滿意:爲第一個工作單元創建了一個初始定時器。當應用程序。服務器執行計時器,然後將其註冊爲第二個工作單元對應的第二個工作單元等。由於EJB計時器支持存儲自定義信息,因此可以將信息從一個工作單元傳遞到另一個工作單元。另外,定時器執行和註冊是事務性的,這對數據庫來說是很好的。您甚至可以使用此方法關閉並重新啓動應用程序服務器。在每個工作單位運行之前,我們檢查數據庫是否在此期間取消了工作。