java为JMS队列创建JBoss连接池
我正在开发一个Web服务解决方案,该解决方案托管在JBoss 4.2.3服务器内,并连接到另一台服务器上托管的JMS队列
到目前为止,每次调用web服务时,我都会创建到JMS队列的新连接,这意味着,每当打开新会话时,都会创建到JMS队列的新连接
例如,我使用下面的代码创建生产者:
InitialContext jmsContext;
ConnectionFactory connectionFactory;
Properties properties;
Queue queue;
properties = JMSProperties.getJNDIProperties();
jmsContext = new InitialContext(properties);
connectionFactory = (ConnectionFactory) jmsContext.lookup("ConnectionFactory");
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) jmsContext.lookup(queueName);
producer = session.createProducer(queue);
connection.start();
我知道这个实现不是很有效,我正在考虑创建一个连接池,这样我就不必每次web服务收到新请求时都创建一个新的连接
如何配置JBoss,使其能够创建到JMS队列的连接池?ConnectionFactory类是否自动为我创建连接池?如果是,如何配置池的大小
谢谢, 菲利佩
# 1 楼答案
从技术上讲,您只需要一个连接,因为它们是线程安全的。看到这个How to handle a Connection object to remote jms server
# 2 楼答案
此wiki链接应该有帮助:http://community.jboss.org/wiki/JBossJMSRA
=======================================================================================
更新: 下面是post,其中包含有关配置的更多信息。我强烈建议您将现有方法与此方法的运行时间进行比较。原因是这篇{a3}文章表明,对于绑定到本地JNDI的远程连接工厂,JCA缓存并没有出现。如果是这样的话,你可以使用尼古拉斯提到的方法。基本上,创建和缓存JMS连接,并使用适当的挂钩刷新该连接(在需要时)