3

我在 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 部署时,代理启动并报告:

连接器 vm://localhost 已启动

我从来没有看到另一个连接器启动,比如 tcp://0.0.0.0:61616。这可能吗?

4

1 回答 1

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"/>
于 2013-01-24T09:01:39.530 回答