有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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类是否自动为我创建连接池?如果是,如何配置池的大小

谢谢, 菲利佩


共 (2) 个答案

  1. # 2 楼答案

    此wiki链接应该有帮助:http://community.jboss.org/wiki/JBossJMSRA

    =======================================================================================

    更新: 下面是post,其中包含有关配置的更多信息。我强烈建议您将现有方法与此方法的运行时间进行比较。原因是这篇{a3}文章表明,对于绑定到本地JNDI的远程连接工厂,JCA缓存并没有出现。如果是这样的话,你可以使用尼古拉斯提到的方法。基本上,创建和缓存JMS连接,并使用适当的挂钩刷新该连接(在需要时)