我在tomcat中有一个嵌入式代理,我的webapp客户端使用vm:// localhost正常连接。我希望另一个jvm中的一些远程客户端能够连接到嵌入式代理。如何设置嵌入式代理以侦听端口#?这适用于嵌入式客户端:
server.xml片段:
<Resource auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm://localhost"
brokerName="MyActiveMQBroker"
useEmbeddedBroker="true"/>
这不适用于远程客户端,但我的嵌入式客户端仍然使用vm:// localhost:
进行连接<Resource auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm:(broker:(tcp://localhost:61616))"
brokerName="MyActiveMQBroker"
useEmbeddedBroker="true"/>
我的远程客户端出现此错误:
无法连接到代理URL:tcp:// localhost:61616。原因:java.net.ConnectException:拒绝连接
我也一直在尝试这个:
brokerURL="vm://localbroker?brokerConfig=xbean:file:C:/temp/activemq.xml"
并在activemq.xml中设置:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static:(tcp://0.0.0.0:61616)"/>
</networkConnectors>
我不相信xml文件正在被读取,因为我的症状在编辑时不会改变。在tomcat启动时,当第一个客户端webapp部署时,代理启动并报告:
Connector vm:// localhost Started
我从未看到另一个连接器启动,例如tcp://0.0.0.0:61616。这可能吗?
答案 0 :(得分:2)
vm://localhost
将无法打开远程代理连接的tcp端口。 vm协议可以在JVM中使用。
本地tomcat上的配置(例如,将主机名视为“tomcathostone”的本地服务器)
<Resource auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="broker:(tcp://0.0.0.0:61616)"
brokerName="MyActiveMQBroker"
useEmbeddedBroker="true"/>
远程tomcat上的配置(例如,考虑主机名为“tomcathosttwo”的远程服务器)
<Resource auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="broker:(tcp://tomcathosttwo:61616,network:static:tcp://tomcathostone:61616)"
brokerName="MyActiveMQBroker"
useEmbeddedBroker="true"/>