Сервлет для удаленного ActiveMQ - PullRequest
1 голос
/ 10 октября 2010

Я пытаюсь отправить сообщение с помощью JMS из сервлета (работающего на Apache Tomcat) в ActiveMQ, работающий на другой виртуальной машине в той же системе.

То, что я пробовал:

  1. Запуск ActiveMQ в моей системе.
  2. Написал клиент (приложение Java) (Producer) для создания сообщений.
  3. Написал клиент (приложение Java) (Consumer) для получения этих сообщений.

Вышеуказанная настройка работает нормально.

Теперь у меня есть сервлет, который ищет ресурсы через JNDI.Это конфигурация context.xml в каталоге META-INF Tomcat.

<Context>
    <Resource 
            name="jms/ConnectionFactory" 
            auth="Container" 
            type="org.apache.activemq.ActiveMQConnectionFactory" 
            description="JMS Connection Factory"
            factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
            brokerURL=" tcp://localhost:61616" 
    />
</Context>

Я могу найти эти ресурсы в sevlet.Сообщение отправлено.Но я думаю, что это не достигает ActiveMQ.Есть идеи, почему?

Я чувствую, что он отправляет его в другое место назначения vm://localhost, работающее внутри контейнера?что не то, что я хочу.Я новичок в маме.

Если бы кто-то мог сказать мне, как отправить сообщение JMS из сервлета удаленному брокеру, это было бы здорово.

1 Ответ

0 голосов
/ 13 октября 2010

Если вы просматриваете соединение через JNDI, которое указывает на экземпляр ActiveMQ по адресу tcp: // localhost: 61616, который не является удаленным посредником.Это брокер, работающий на локальном компьютере через порт 61616. Если вы хотите установить соединение с удаленным брокером на другом компьютере, замените localhost на IP-адрес.

Брюс

...