[英]What is the best practice for managing thread pools in a container?
我需要能夠在一個容器中完成兩個線程任務,並且需要了解執行此操作的最佳實踐。 這是我需要完成的兩類任務:
當然,我可以創建自己的java.util.concurrent.Executor
實例並使用它,但是我懷疑容器可能足夠聰明以提供它們所管理的容器。
FWIW-我在JDK 1.5.0上使用WebSphere 6.1(我知道,很古老...但這就是它的意思)。 我正在運行使用Apache CXF開發的Web服務,因此我在servlet容器中,但已使用Spring配置。
對於1),您可能想要查看異步Bean。 或者,使用消息驅動Bean來拾取並操作發送到隊列的消息。 您可能也想看看Spring的Quartz東西。 我認為使用Servlet 3(在WAS 6.1上沒有機會!),如果沒有Async Work Manager或JMS方法,您可能會獲得異步支持,但是直到那時,我還不知道有什么比這些模式更好的方法。
對於2),通常阻止請求是一項冒險的業務(如果您超時)。 但是,您位於servlet容器中,因此可以使用java.util.concurrent中的內容,例如您提到的ExecutorService。 或者,使用消息傳遞將工作發送到其他地方並阻塞直到完成。
通常,我不會從容器內部啟動線程,因為有可能打開j2ee完全合規性,並且您的應用程序將死亡。 在完全合規的情況下,不允許創建線程。 您想要做的是設置一個JMS隊列,然后將“要完成的工作”提交給該隊列。 然后,您可以讓MDB
監聽隊列,該隊列執行線程將執行的實際操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.