2009-08-17 34 views
3

假設我有一個Java應用程序服務器的消息驅動Bean(MDB)。 MDB從JMS隊列接收消息並將其傳遞給消息處理器。在我的情況下,消息處理器是一個非常重的對象,需要大量初始化,所以我不想創建一個處理每條消息的新對象。相反,我想提前創建一個消息處理器池,並使用它來處理消息。如何創建Java應用程序服務器的自定義對象池

所以,我的問題是:什麼是「正確」的方式來建立這個池的J2EE應用服務器?是否有任何服務器對定義自定義(非連接)對象池有內置支持?我希望利用這種模式的任何內置支持,然後再將該池塞入單身人士並希望獲得最佳效果。特別是:

  • 如何定義/實例化池?
  • 如何訪問游泳池? JNDI?
  • 應用服務器提供哪些管理功能?

我知道如何實現通常的對象池。我的問題主要是關於在J2EE應用服務器中創建池。

我打算使用Glassfish的,但我的「M靈活,如果JBoss的或別的東西將使它更容易些。

謝謝!

回答

0

Java 5中自帶的Executor API可以做到這一點。

+0

我不確定這是如何解決我的問題的,尤其是在J2EE應用服務器上下文中。 – 2009-08-17 15:52:26

+0

您只需在應用程序服務器中將應用程序的啓動/停止與執行程序同步,並且它應該可以工作。 – 2009-08-18 07:16:13

4

的EJB本身通常作爲合併對象大多數應用服務器管理。

來實現應用程序最明顯的方法是使用MDB本身作爲消息處理器,然後配置使用應用程序服務器部署配置,這當然是特定於您所實際使用的服務器池。

+0

我會試試這個。我想知道我會得到多少控制。例如,如果存在一段不活動時間,下一次消息進入時,AS是否會清空MDB池,從而需要進行另一個長時間的初始化過程? – 2009-08-17 17:26:34

+0

這實際上是特定於AS的。我的主要經驗是使用JBoss和Weblogic,它們都可以定製鈍化和處理策略以及池大小和行爲。我認爲GlassFish沒有什麼不同,你可以在這裏找到相關的文檔:http://docs.sun.com/app/docs/doc/820-7695/beaiu?a=view – 2009-08-18 07:56:58

相關問題