2016-10-14 14 views
1

WSO2 ESB 5.0.0でActiveMQを使用してJMSトランスポートを設定しようとしています。私はhttps://docs.wso2.com/display/ESB500/Configure+with+ActiveMQの指示に従ったが、成功しなかった。WSO2 ESB 5.0.0 + ActiveMQ 5.10.0

私のActiveMQのバージョンは5.10です。

私はJMS Endpoitを介してメッセージを送信するとき、私はこのエラーを取得:我々はXAトランザクションを使用するときだけで

TID: [-1234] [] [2016-10-11 17:42:15,618] ERROR {org.apache.synapse.core.axis2.Axis2Sender} - Unexpected error during sending message out {org.apache.synapse.core.axis2.Axis2Sender} 
    java.lang.ClassCastException: org.apache.activemq.ActiveMQConnectionFactory cannot be cast to javax.jms.XAConnectionFactory 
    at org.apache.axis2.transport.jms.JMSOutTransportInfo.createJMSSender(JMSOutTransportInfo.java:377) 
    at org.apache.axis2.transport.jms.JMSSender.sendMessage(JMSSender.java:135) 
    at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112) 
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
    at org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:297) 
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) 
    at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:581) 
    at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:78) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:512) 
    at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:382) 
    at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65) 
    at org.apache.synapse.endpoints.TemplateEndpoint.sendMessage(TemplateEndpoint.java:74) 
    at org.apache.synapse.endpoints.TemplateEndpoint.send(TemplateEndpoint.java:66) 
    at org.apache.synapse.endpoints.ResolvingEndpoint.sendMessage(ResolvingEndpoint.java:74) 
    at org.apache.synapse.endpoints.ResolvingEndpoint.send(ResolvingEndpoint.java:58) 
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:121) 
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) 
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) 
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:330) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:554) 
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:188) 
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:261) 
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

この例外がスローされます。それ以外の場合は正常に動作します。

助けが必要ですか?

+0

プロキシとファイルの設定を共有してください。 –

答えて

2

あなたはActiveMQの5.10を使用する場合は、以下のファイルに /リポジトリ/コンポーネント/ libディレクトリに/ libディレクトリの中に配置する必要があります。

activemq-broker-5.10.0.jar 
activemq-client-5.10.0.jar 
geronimo-j2ee-management_1.1_spec-1.0.1.jar 
geronimo-jms_1.1_spec-1.1.1.jar 
hawtbuf-1.10.jar 

ないhttps://docs.wso2.com/display/ESB500/Configure+with+ActiveMQ

2

のActiveMQに記載されているファイル

指定します:org.apache.activemq.ActiveMQXAConnectionFactory

+0

私はあなたが頭の爪に当たったと思います。トランザクションなしで動作しますが、トランザクションを使用すると失敗します。接続ファクトリはどこで指定する必要がありますか?このエンドポイント "jms:/ SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName = QueueConnectionFactory & java.naming.factory.initial = org.apache.activemq.ActiveMQXAConnectionFactory & java.naming.provider.url = tcp://127.0.0を試しました。 。1:61616 & transport.jms.DestinationType = queue "効果なし。 – fipries

2

A XA接続ファクトリを持ちますActive MQバージョン5.10を使用している場合は、バージョン5.8の次のjarファイルを$ ESB_HOME/repository/components/libに追加する必要があります。

  • のActiveMQブローカー-5.8.0.jar
  • ActiveMQのクライアント-5.8.0.jar
  • のgeronimo-jms_1.1_spec-1.1.1.jar
  • のgeronimo-J2EE-management_1。 1_spec-1.0.1.jar

さらに、/repository/conf/axis2/axis2.xmlにあるJMSトランスポートリスナーとJMSトランスポートレシーバーのコメントを解除します。

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"> 
    <parameter name="myTopicConnectionFactory" locked="false"> 
     <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> 
     <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter> 
     <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter> 
     <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter> 
    </parameter> 

    <parameter name="myQueueConnectionFactory" locked="false"> 
     <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> 
     <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter> 
     <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter> 
     <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> 
    </parameter> 

    <parameter name="default" locked="false"> 
     <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> 
     <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter> 
     <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter> 
     <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> 
    </parameter> 

<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/> 

次にサーバーを起動します。

シナリオ[1]に従って設定を確認する必要があります。

ESBは、次のようになり、JMSエンドポイントのサンプルコードに送信します。

<proxy xmlns="http://ws.apache.org/ns/synapse" name="StockQuoteProxy" transports="http"> 
<target> 
    <inSequence> 
     <property action="set" name="OUT_ONLY" value="true"/> 
     <send> 
      <endpoint> 
       <address uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;     java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue"/> 
      </endpoint> 
     </send> 
    </inSequence> 
    <outSequence> 
     <send/> 
    </outSequence> 
    </target> 
    <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/> 
    </proxy> 

あなたのエラーがJMSの送信者との問題について示しています。特に、axis2内の構成と、jmsエンドポイントを定義するプロキシ構成を確認してください。

[1]
関連する問題