簡體   English   中英

如何在WebSphere下停止應用程序的后台線程

[英]how to stop application's background threads under WebSphere

我們正在WebSphere集群中部署應用程序。 應用程序正在運行自己的永不終止的線程,這些線程正在檢查某些情況,例如:

while(true){
  logger.severe("Unterminated thread");
  Thread.sleep(10000);
}

問題在於,在WebSphere中停止應用程序(通過wsadmin或管理控制台)之后,僅servlet未注冊,但是這些線程沒有被殺死並且仍在運行。 當我停止應用程序時,有什么方法可以消除這種情況? 我們正在使用WebSphere 7。

謝謝

您永遠不要從JavaEE應用程序手動創建線程。 線程管理是JavaEE容器應提供的東西。

WebSphere具有WorkManager機制來幫助您滿足線程需求。 請查看本教程以了解實施細節。

根據您對另一個答案的評論,我有一個建議。 (請注意,我同意Oleg的意見,實際上您不應該這樣做,但如果必須的話...)。

我假設在此代碼來自的常規Java應用程序中,這些后台線程以某種方式收到停止信號。 我的建議是,當您的servlet全部注銷后,使用ServletContextListener發送停止信號。

請注意,如果您還沒有辦法告訴線程停止,那可能是另一個錯誤,這對您完全沒有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM