2009-08-17 94 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

相关问题