Я использовал плагин grails-activemq для встраивания брокера ActiveMQ в приложение Grails, запущенное в Tomcat 7. Проблема в том, что брокер прослушивает только локальные соединения.netstat -an
показывает это:
tcp 0 0 127.0.0.1:61616 0.0.0.0:* LISTEN
Я настроил JNDI в tomcat / conf / context.xml примерно так
<Context>
<Resource name="jms/ConnectionFactory" auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://10.39.95.39:61616"
brokerName="LocalActiveMQBroker"/>
<Resource name="jms/letterCountQueue" auth="Container"
type="org.apache.activemq.command.ActiveMQQueue" description="letterCountQueue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="letterCountQueue"/>
</Context>
И grails-app / conf / spring / resources.groovy содержит
import org.apache.activemq.ActiveMQConnectionFactory
import org.apache.activemq.broker.TransportConnector
import org.apache.activemq.command.ActiveMQQueue
import org.apache.activemq.xbean.XBeanBrokerService
import org.springframework.jms.core.JmsTemplate
import org.springframework.jms.connection.SingleConnectionFactory
import org.springframework.jms.listener.DefaultMessageListenerContainer
beans = {
jmsBroker(XBeanBrokerService) {
useJmx = 'false'
persistent = 'false'
transportConnectors = [new TransportConnector(uri: new URI('tcp://10.39.95.39:61616'))]
}
jmsFactory(ActiveMQConnectionFactory) {
brokerURL = 'tcp://10.39.95.39:61616'
}
notificationQueue(ActiveMQQueue, 'queue.notification')
jmsTemplate(JmsTemplate) {
connectionFactory = { SingleConnectionFactory cf ->
targetConnectionFactory = ref('jmsFactory')
}
}
}
Где я указал или принял по умолчанию тот факт, что посредник не прослушивает соединения за пределами localhost?Как я могу это изменить?
Большое спасибо,
Ли Грей