Создание пула соединений JBoss для очереди JMS - PullRequest
1 голос
/ 11 июля 2011

Я разрабатываю решение для веб-службы, которое размещено на сервере JBoss 4.2.3 и подключается к очереди JMS, которая размещена на другом сервере.

Пока я создаю новое соединение с 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();

Я знаю, что эта реализация не очень эффективна, и я думаю о создании пула соединений, чтобы мне не приходилось создавать новое соединение каждый раз, когда веб-служба получает новый запрос.

Как настроить JBoss, чтобы он создавал пул соединений с очередью JMS?Класс ConnectionFactory автоматически создает пул соединений для меня?Если да, то как мне настроить размер пула?

Спасибо, Фелипе

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Технически, вам нужно только одно соединение, так как они безопасны для потоков.См. Это Как обрабатывать объект подключения к удаленному серверу JMS

0 голосов
/ 11 июля 2011

Эта вики-ссылка должна помочь: http://community.jboss.org/wiki/JBossJMSRA

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

Обновление : Вот запись с дополнительной информацией о конфигурации. Я настоятельно рекомендую сравнить прошедшее время для вашего существующего подхода и этого. Причиной этого является интересный пост, в котором говорится, что кэширование JCA не входит в картину для фабрик удаленных соединений, связанных с локальным JNDI. Если это так, вы можете использовать подход, упомянутый Николасом. По сути, создайте и кешируйте JMS-соединение с подходящими хуками для обновления этого соединения (при необходимости).

...