有一個Java EE應用程序,我們有批量的作業要處理。處理涉及調用有限制的外部服務,以便我們只能同時發送N個請求。這個瓶頸必須在我們的應用程序邏輯中實現,我想知道我們如何才能以最佳方式實現這一目標。幸運的是,羣集並不是必需的,所以我們可以將問題侷限於單個服務器實例。限制Java EE應用程序中的併發資源使用情況
我的第一個想法是使用由
ThreadPool
有N支持的ExecutorService
工作線程,以便ThreadPool
對象 將作爲監管行動。當然,這不是一個EE解決方案。我的第二個想法是莫名其妙地配置這樣一個在
ThreadPool
容器和使用,但我還沒有發現像這樣 到目前爲止的任何功能。第三個想法是在EJB中使用
Semaphore(N)
對象中的一個@Singleton
EJB。第四個想法是以某種方式創建一個有限的無狀態 會話bean池,並將有限的資源訪問放在這些池中。作爲 豆數量由容器管理,資源的使用將 限制以及
(澄清:一般的解決方案是最好的,但衆所周知,我們正在運行的Glassfish 3.1.1,也許稍後在JBoss 6.x上)
您能否建議我爲這個問題建立一個好的架構和/或評論我的想法來幫助我做出決定?
其他的想法,仍然歡迎:-) – jabal