2013-04-24 78 views
0

我正在尋找一個正確的方法,要做到以下Java EE 6中,如果可能的話,只有香草的Java EE 6。如何以正確的方式在Java EE 6中實現具有貪婪工作池的作業隊列?

我想提出一個作業作業隊列,並有工作人員對象,它應該從隊列中拉出工作,如果他們是空閒的固定池。

工人對象是在一個固定的關係的遺留系統,所以不可能使用在多線程一個工人對象爲所有作業,它也不可能實例化一個新的工作對象每一項工作。

貪婪的工人模式看起來很完美,但這是唯一真正的Java SE。在EE中,我不確定實現這一點的正確方法是什麼。

有什麼建議嗎?

在此先感謝。 M.

回答

0

首先要注意的是,通過在該規範定義您不能創建和JavaEE的開始自己的線程。

關於您的設置,我不完全確定它是如何在您的系統中運行的 - 您是否始終與客戶端有固定的關係,或者是否只有不定期執行的任務才能執行, ?

在這兩種情況下,你可以只使用狀態EJB,這樣一個EJB服務於特定的客戶端系統。那麼對於第一種情況,這個EJB在整個生命週期中爲客戶端提供服務,或者在第二種情況下,您可以啓動異步EJB來完成這項工作。

+0

感謝您的回答。做完這些之後,例如我有四個EJB作爲我的遺留系統的對象,我確信,一個EJB只能在一個線程中一次使用。現在讓我們看看另一端:我如何實現傳入請求(例如從一個servlet)分發到(或從中)的EJB,這無關緊要(==>貪婪工作者方法)? – user1631581 2013-04-26 05:57:01

+0

@ user1631581我還沒有完全理解你的設置。你講的是4個EJB和1個遺留系統。你爲什麼有固定的號碼?遺留系統一次只能有一定數量的連接嗎?如果你的EJB連接到遺留系統,它是以一種難以忘懷的風格提供服務,還是需要長時間保持狀態? – 2013-04-26 06:16:17

+0

@ user1631581 [繼續]正如我剛纔從您的評論的理解,也有工人的固定號碼,誰就可以應該做的工作。所以你不必做任何特別的事情。您的servlet可以使用注入的EJB,並且容器將爲該工作提供一個EJB實例(保證被調用者專用)。如果由於某種原因應該有一個固定的數字,那麼你必須在容器的部署描述符中指定它(例如glassfish-ejb-jar.xml)。 – 2013-04-26 06:22:56