Java EE 环境中的对象池
Java EE 应用程序服务器提供可由消息驱动的 Bean 应用程序, Enterprise Java Bean 和 Servlet 使用的连接池功能。
WebSphere® Application Server 维护与 JMS 提供程序的连接池,以提高性能。 当应用程序创建 JMS 连接时,应用程序服务器将确定空闲连接池中是否已存在连接。 如果存在,会将连接返回给应用程序;否则,将创建新连接。
使用 IBM® MQ 消息传递提供程序时,执行出站消息传递的应用程序 (例如,企业 Java Bean 和 Servlet) 以及消息驱动的 Bean 侦听器端口组件可以使用这些连接池。
IBM MQ 消息传递提供程序激活规范使用 IBM MQ 资源适配器提供的连接池功能。 有关更多信息,请参阅 配置 WebSphere MQ 资源适配器的属性 。
使用连接池的示例 说明执行出站消息传递的应用程序和侦听器端口在创建 JMS 连接时如何使用空闲池。
可用连接池维护线程 说明当应用程序或侦听器端口完成连接时,这些连接会发生什么情况。
池维护线程示例 说明如何清除空闲连接池以防止 JMS 连接变为旧连接。
WebSphere Application Server 对可从工厂创建的连接数有限制,由连接工厂的 最大连接数 属性指定。 该属性的缺省值为 10,表示任一时间最多可以使用工厂创建 10 个连接。
每个工厂都有关联的空闲连接池。 当启动应用程序服务器时,空闲连接池为空。 工厂的空闲池中可存在的最大连接数也由“最大连接数”属性指定。
有关连接池在 WebSphere Application Server中的工作方式的信息,请参阅 为 JMS 连接配置连接池。 对于其他应用程序服务器,请参阅相应的应用程序服务器文档。
如何使用连接池
每个 JMS 连接工厂都有一个与其关联的连接池,并且该连接池包含零个或多个 JMS 连接。 每个 JMS 连接都具有关联的 JMS 会话池,并且每个 JMS 会话池都包含零个或多个 JMS 会话。

- connectionFactory.createConnection()
- ConnectionFactory.createConnection(String, String)
- QueueConnectionFactory.createQueueConnection()
- QueueConnectionFactory.createQueueConnection(String, String)
- TopicConnectionFactory.createTopicConnection()
- TopicConnectionFactory.createTopicConnection(String, String)
如果池中没有空闲连接,并且使用该工厂创建的连接数尚未达到该工厂的最大连接数属性所指定的限制,那么连接管理器会创建新连接以供应用程序使用。
但是,如果应用程序尝试创建连接,但使用该工厂创建的连接数已达到该工厂的最大连接数属性值,那么应用程序将等待连接变为可用(即被放回到空闲池中)。
应用程序等待的时间在连接池的连接超时属性中指定,其缺省值为 180 秒。 如果在 180 秒内将连接放回到空闲池中,那么连接管理器会立即再次将该连接从池中取出并传递给应用程序。 但是,如果超过了超时时间段,那么会抛出 ConnectionWaitTimeoutException。
- Connection.close()
- QueueConnection.close()
- TopicConnection.close()
