3

私は webapp クライアントが vm://localhost を使用して正常に接続している tomcat に組み込みのブローカーを持っています。別の 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 に答える