問題文:Tomcat7のコンテナリソースとしてJMS接続ファクトリをリモートActiveMQインスタンス(tcp上でリッスン)に公開するためのヘルプを探しています。 Tomcat7はそれにアクセスできます。リモートActiveMQインスタンスに接続するためのTomcat設定
私の設定:私はTomeeとTomcat7インスタンスをサーバー上で実行しています。接続(以下tomee.xml)です。WireFormat TCPを聞くために構成されたブローカーとActiveMQのホストでTomee:
<Resource name="jms/ConnectionFactory"
auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://10.173.80.42:61619?soTimeout=60000"
brokerName="ActiveMQStageBroker"
useEmbeddedBroker="false" />
<Resource name="myQueue"
auth="Container"
type="org.apache.activemq.command.ActiveMQQueue"
proxy-interface="javax.jms.Queue"
description="My Queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="myQueue" />
:私のTomcat7インスタンスで
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<!-- see http://tomee.apache.org/containers-and-resources.html -->
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig = broker:(tcp://10.173.80.42:61619)
ServerUrl = tcp://10.173.80.42:61619
</Resource>
<Resource id="jms/ConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
<Container id="MyJmsMdbContainer" type="MESSAGE">
ResourceAdapter = MyJmsResourceAdapter
</Container>
<Resource id="myqueue" type="javax.jms.Queue"/>
<!-- activate next line to be able to deploy applications in apps -->
<Deployments dir="apps" />
</tomee>
は、私はとしてのserver.xmlを設定しています
そして、私はactivemq-all-5.12.0.jarをTomcat7共有ライブラリフォルダーに配置しました。また、WebアプリケーションのMETA-INFフォルダのcontext.xmlファイルと、web.xmlのresource-refを作成した追加のメジャーについても関連参照を作成しました(基本的にここでわくわくしています)
:私はActiveMQのとの通信をトリガーするアクションを開始するとき、私は私のログファイルに次のエントリを参照してください。
2016-07-19 10:40:07,659 [system ] DEBUG WireFormatNegotiator - Sending: WireFormatInfo { version=11, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, Host=10.173.80.42, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2016-07-19 10:40:07,666 [.42:[email protected]] DEBUG InactivityMonitor - Using min of local: WireFormatInfo { version=11, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, Host=10.173.80.42, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote: WireFormatInfo { version=10, properties={CacheSize=1024, MaxFrameSize=9223372036854775807, CacheEnabled=true, SizePrefixDisabled=false, TcpNoDelayEnabled=true, MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2016-07-19 10:40:07,667 [.42:[email protected]] DEBUG WireFormatNegotiator - Received WireFormat: WireFormatInfo { version=10, properties={CacheSize=1024, MaxFrameSize=9223372036854775807, CacheEnabled=true, SizePrefixDisabled=false, TcpNoDelayEnabled=true, MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2016-07-19 10:40:07,667 [.42:[email protected]] DEBUG WireFormatNegotiator - tcp:///10.173.80.42:[email protected] before negotiation: OpenWireFormat{version=11, cacheEnabled=false, stackTraceEnabled=false, tightEncodingEnabled=false, sizePrefixDisabled=false, maxFrameSize=9223372036854775807}
2016-07-19 10:40:07,668 [.42:[email protected]] DEBUG WireFormatNegotiator - tcp:///10.173.80.42:[email protected] after negotiation: OpenWireFormat{version=10, cacheEnabled=true, stackTraceEnabled=true, tightEncodingEnabled=true, sizePrefixDisabled=false, maxFrameSize=9223372036854775807}
2016-07-19 10:40:08,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:08,836 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:08,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:08,836 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:18,835 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:18,835 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:27,667 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:27,668 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:28,813 [ ReadCheckTimer] DEBUG AbstractInactivityMonitor - 30000ms elapsed since last read check.
2016-07-19 10:40:28,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:28,834 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:37,667 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:37,668 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:38,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:38,835 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:47,667 [ ReadCheckTimer] DEBUG AbstractInactivityMonitor - 30000ms elapsed since last read check.
私はキューのEnqueueCountとDequeueCountを見たときも、私は彼らが変更されていない参照してください。
ログは、Tomcat7 Containerが実際にリモートインスタンスから情報を受け取ったことを示しているため(「Received Wireformat:...」を参照)、2つのインスタンスが通信できます。しかし、なぜデータを送信できないのですか?
補足:ActiveMQをホストするTomeeインスタンスにデプロイされたときと同じWebアプリケーションがキューとシームレスに通信できます。
TomeeとTomcat7の両方で試してみると間違っているか何かをしている可能性があることに感謝します。
ありがとうございます!
なぜスタンドアロンブローカーを実行するだけではないのですか?あなたは既に外部に接続しています –
@ JonathanS.Fisher、はい、それはオプションであり、私もそれを検討しています。しかし、少なくとも理論的に言えば、上記のセットアップも同様に機能するはずです。 Tomeeベースのキューを使用するもう1つの理由は、Tomeeコンテナがキューとうまく動作するMDB駆動型サービスをホストするためです。しかし、上記の問題を引き起こしている可能性のある考えはありますか? – deepthought