2016-07-19 17 views
0

問題文: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の両方で試してみると間違っているか何かをしている可能性があることに感謝します。

ありがとうございます!

+0

なぜスタンドアロンブローカーを実行するだけではないのですか?あなたは既に外部に接続しています –

+0

@ JonathanS.Fisher、はい、それはオプションであり、私もそれを検討しています。しかし、少なくとも理論的に言えば、上記のセットアップも同様に機能するはずです。 Tomeeベースのキューを使用するもう1つの理由は、Tomeeコンテナがキューとうまく動作するMDB駆動型サービスをホストするためです。しかし、上記の問題を引き起こしている可能性のある考えはありますか? – deepthought

答えて

0

が動作するように、上記の設定を取得しようとして過ごした数え切れないほどの時間の後、それがあることが判明:

  1. JNDIルックアップの問題。
  2. エラーレベル(おかげで!)ではなく、デバッグレベルで例外 をログに記録した開発者によってコンパイルされました。

    1. 上記の構成は、ActiveMQのはTomeeコンテナの一部として実行し、接続を有するように構成されている場合は、正常に動作します:

    とにかく、ソートされたそれらのすべてを、ここで私が見つけたものですTomcat7のブローカーは、その中にデプロイされているWebアプリケーションにグローバルに共有されたリソースとして公開されています(JNDIを知っておいてください)。

  3. また、@ JonathanS.Fisherによって提案された構成を使用することもできました。私はActiveMQをスタンドアローンのインスタンスとして起動し、Tomcat7とTomeeにアプリケーションをホストして接続することができました。

これは誰でも同様の状況で立ち往生するのを助けます。

乾杯

関連する問題