如何在Java应用程序服务器中创建自定义对象池

时间:2009-08-17 15:32:17

标签: java java-ee glassfish jms object-pooling

假设我在Java应用程序服务器中有一个消息驱动bean(MDB)。 MDB从JMS队列接收消息并将其传递给消息处理器。在我的例子中,消息处理器是一个非常重的对象,需要大量的初始化,所以我不想创建一个新的来处理每个消息。相反,我想提前创建一个消息处理器池,并使用它们来处理消息。

所以,我的问题是:在J2EE应用服务器中构建此池的“正确”方法是什么?是否有任何服务器内置支持定义自定义(非连接)对象池?我想利用这种模式的任何内置支持,然后我将池塞进一个单独的并希望最好。特别是:

  • 如何定义/实例化池?
  • 如何访问游泳池? JNDI?
  • 应用服务器提供哪些管理功能?

我知道如何实现一般的对象池。我的问题主要是关于在J2EE应用服务器中创建一个池。

我打算使用Glassfish,但如果JBoss或其他东西可以让我更容易,我就会灵活。

谢谢!

3 个答案:

答案 0 :(得分:4)

EJB本身通常由大多数应用程序服务器作为池化对象进行管理。

实现应用程序最明显的方法是使用MDB本身作为消息处理器,然后使用应用程序服务器部署配置配置池,这当然是特定于您实际使用的服务器。

答案 1 :(得分:1)

您可以尝试Apache Commons Pool,它是用于汇集应用程序对象的通用机制。

答案 2 :(得分:0)

Java 5带有可以执行此操作的Executor API