如何在独立Java应用程序中共享JMS连接?

如何在独立Java应用程序中共享JMS连接?,jms,ibm-mq,mq,pooling,Jms,Ibm Mq,Mq,Pooling,我们正在开发一个IBMWebSphereMQ应用程序,并使用JMSAPI来操作消息。但是我们有一个问题,连接需要花费太多的时间,我们希望将JMS连接池化,因为它是一个独立的应用程序,我们没有应用程序容器来提供JNDI或池化服务。那么有解决这个问题的办法吗?对于JDBC,我们可以使用DBCP或c3p0来归档池数据源,在JMS中,是否有任何类似的项目可以池JMS连接?过去,JMS内置了池,但在版本7中,它似乎已被删除 在早期版本的WebSphere中设置ConnectionPooling的使用 JM

我们正在开发一个IBMWebSphereMQ应用程序,并使用JMSAPI来操作消息。但是我们有一个问题,连接需要花费太多的时间,我们希望将JMS连接池化,因为它是一个独立的应用程序,我们没有应用程序容器来提供JNDI或池化服务。那么有解决这个问题的办法吗?对于JDBC,我们可以使用DBCP或c3p0来归档池数据源,在JMS中,是否有任何类似的项目可以池JMS连接?

过去,JMS内置了池,但在版本7中,它似乎已被删除

在早期版本的WebSphere中设置ConnectionPooling的使用 JMS的MQ类。保留此方法是为了与兼容 较旧的MQJMS应用程序,但由于此连接池 功能已从版本7中删除,正在设置此属性 没有效果


在没有其他任何东西的情况下,您可以使用。与DBCP(使用池)的想法相同,但适用于非JDBC对象。

Spring的CachingConnectionFactory适用于此用例。
中的回答解释了如何在Tomcat中实现这一点,但是那里的代码可以很容易地适应Java独立应用程序。这应该比编写ApacheCommons池实现容易得多(而且不容易出错)。

似乎ApacheCommons池是我可能的方法。谢谢。谢谢,我试过spring
CachingConnectionFactory
,但失败了。但是,鉴于我们正在使用wmq版本6,我将尝试本机池-
setUseConnectionPooling(true)