2013-04-17 58 views
2

有一個Java EE應用程序,我們有批量的作業要處理。處理涉及調用有限制的外部服務,以便我們只能同時發送N個請求。這個瓶頸必須在我們的應用程序邏輯中實現,我想知道我們如何才能以最佳方式實現這一目標。幸運的是,羣集並不是必需的,所以我們可以將問題侷限於單個服務器實例。限制Java EE應用程序中的併發資源使用情況

  • 我的第一個想法是使用由 ThreadPool有N支持的ExecutorService工作線程,以便ThreadPool對象 將作爲監管行動。當然,這不是一個EE解決方案。

  • 我的第二個想法是莫名其妙地配置這樣一個在 ThreadPool容器和使用,但我還沒有發現像這樣 到目前爲止的任何功能。

  • 第三個想法是在EJB中使用Semaphore(N)對象中的一個@Singleton EJB。

  • 第四個想法是以某種方式創建一個有限的無狀態 會話bean池,並將有限的資源訪問放在這些池中。作爲 豆數量由容器管理,資源的使用將 限制以及

(澄清:一般的解決方案是最好的,但衆所周知,我們正在運行的Glassfish 3.1.1,也許稍後在JBoss 6.x上)

您能否建議我爲這個問題建立一個好的架構和/或評論我的想法來幫助我做出決定?

+0

其他的想法,仍然歡迎:-) – jabal

回答

1

爲什麼不使用作品?瀏覽關於如何在JBoss和Weblogic中使用Works的概述,請看here。我不知道Glasshfish,現在我將把研究留給你;)
總之,Works是符合EE標準的線程。

+0

感謝,TBH從來沒有聽說過這件事。開始調查.. :-) – jabal

+0

正如我所看到的[JSR-237 http://www.jcp.org/en/jsr/detail?id=237]被撤回,[JSR-236 http://www.jcp。 org/en/jsr/detail?id = 236]昨天剛剛完成。:-) – jabal

+0

我知道,不知道「JCA WorkManager API只適合在資源適配器中使用」。所以我一直在使用某種解決方法。 :-O – Carlo