【问题标题】:Creating JBoss Connection Pool for JMS queue为 JMS 队列创建 JBoss 连接池
【发布时间】:2011-07-11 16:03:57
【问题描述】:

我正在开发一个托管在 JBoss 4.2.3 服务器内并连接到托管在另一台服务器上的 JMS 队列的 Web 服务解决方案。

到目前为止,每次调用 Web 服务时,我都会创建一个到 JMS 队列的新连接,这意味着,每当打开一个新会话时,都会创建一个到 JMS 队列的新连接。

例如,我使用下面的代码来创建Producer:

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

谢谢, 费利佩

【问题讨论】:

    标签: java jboss jms connection-pooling


    【解决方案1】:

    这个 wiki 链接应该会有所帮助:http://community.jboss.org/wiki/JBossJMSRA

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

    更新: 这是post,其中包含有关所涉及配置的更多信息。我强烈建议您比较现有方法和这个方法的经过时间。原因是这个interesting 帖子表明JCA 缓存不适用于绑定到本地JNDI 的远程连接工厂。如果是这种情况,您可以使用 Nicholas 提到的方法。基本上使用适当的钩子创建和缓存 JMS 连接以刷新该连接(在需要时)。

    【讨论】:

    • 您好,我已更改代码以尝试使用 JBoss JMSRA 连接(如下): connectionFactory = (ConnectionFactory) jmsContext.lookup("java:/JmsXA");但现在我收到错误消息:javax.jms.InvalidDestinationException: No such destination: JBossQueue[queue] has it been deploy?你知道我为什么会收到这个错误吗?
    • 你有集群的Jboss环境吗?如果是,那么我相信您需要使用“/JmsXA”而不是“java:/JmsXA”在全局 JNDI 中进行上下文查找。
    • 其实没有,我只有一个 JBoss。我是否必须更改 JBoss 配置文件中的任何内容才能使其正常工作? PS:我使用的是 JBoss Messaging 而不是 JBoss MQ。
    • 发布了我的答案的更新,因为评论部分有很多信息:-)
    • 嗨,我关注了你的帖子,一切正常!我什至在 jms-ds.xml 文件中创建了自己的 tx-connection-factory,但是为此我需要注释掉 JmsXARealm这一行应用>。您认为这可能是一个安全问题吗?
    【解决方案2】:

    从技术上讲,您只需要一个连接,因为它们是线程安全的。看到这个How to handle a Connection object to remote jms server

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2011-04-06
      • 2016-05-05
      • 2010-12-07
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      相关资源
      最近更新 更多