2017-06-16 9 views
0

JMSキューにメッセージを送信しようとしましたが、キュー名は動的で、DBからフェッチされます。wso2のプロパティからエンドポイントを取得できません。5.0.0

キュー名とともに、接続ファクトリの詳細、初期コンテキストファクトリ、プロバイダURLが連結され、wso2 esbのプロパティ(endpt)に保存されます。

エンドポイントとして送信メディエーターで最終連結文字列(endpt)を使用したいと思います。エンドポイントタイプをXPATHとして指定し、$ ctx:endptを使用して変数を呼び出しました(endptは最終的にURLが形成されたプロパティです)。それは動作していません。

<?xml version="1.0" encoding="UTF-8"?> 
<property 
expression="fn:concat('jms://', $ctx:queueName, '? 
transport.jms.ConnectionFactoryJNDIName=', $ctx:connectionFactory,'&amp;java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory&amp;java.naming.provider.url=', 't3://localhost:7003,localhost:7004', '&amp;transport.jms.DestinationType=queue')" 
name="endpt" scope="default" type="STRING" 
xmlns="http://ws.apache.org/ns/synapse" 
xmlns:ns="http://org.apache.synapse/xsd"/> 

EDIT 1:以下のコードは、プロキシサービスから呼び出されている完全な配列である、

私はToヘッダで定義されたエンドポイントに$体を送信する必要があります。同じことが、プロキシサービスの中でsendメディエータでendptを定義するときに機能しましたが、プロキシサービスから上記のシーケンス(シーケンスメディエータを使用して)を呼び出すと、nullメッセージがJMSキューに送信されます。

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="sendtoconsumer" xmlns="http://ws.apache.org/ns/synapse"> 
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/> 
<property expression="//*[name() = 'CONSUMER_REFERENCE']/text()" 
name="topic" scope="default" type="STRING" 
xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ns="http://org.apache.synapse/xsd"/> 
    <property expression="fn:substring-before($ctx:topic,'//')" 
     name="topicval" scope="default" type="STRING" 
     xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ns="http://org.apache.synapse/xsd"/> 
    <property 
     expression="fn:substring-before(fn:substring-after($ctx:topic,'//'),'@')" 
     name="queueName" scope="default" type="STRING" 
     xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ns="http://org.apache.synapse/xsd"/> 
    <property expression="fn:substring-after($ctx:topic,'@')" 
     name="connectionFactory" scope="default" type="STRING" 
     xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ns="http://org.apache.synapse/xsd"/> 
    <log level="custom"> 
     <property expression="$ctx:pubRequest" name="body" xmlns:ns="http://org.apache.synapse/xsd"/> 
     <property expression="$ctx:topic" name="topic" xmlns:ns="http://org.apache.synapse/xsd"/> 
     <property expression="$ctx:topicval" name="topicval" xmlns:ns="http://org.apache.synapse/xsd"/> 
    </log> 
    <switch source="get-property('topicval')" xmlns:ns="http://org.apache.synapse/xsd"> 
     <case regex="mq:"/> 
     <case regex="java:"> 
      <property 
       expression="fn:concat('jms://', $ctx:queueName, '?transport.jms.ConnectionFactoryJNDIName=', $ctx:connectionFactory,'&amp;java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory&amp;java.naming.provider.url=', 't3://localhost:7003,localhost:7004', '&amp;transport.jms.DestinationType=queue')" 
       name="endpt" scope="default" type="STRING"/> 
      <log level="custom"> 
       <property expression="$ctx:endpt" name="sendvalue"/> 
      </log> 
      <header expression="get-property('endpt')" name="To"/> 
      <send> 
       <endpoint> 
        <default/> 
       </endpoint> 
      </send> 
     </case> 
     <case regex="http:"/> 
     <default> 
      <log level="custom"> 
       <property expression="$ctx:topic" name="poda"/> 
      </log> 
     </default> 
    </switch> 
</sequence> 
+0

あなたはQUEUENAMEプロパティを設定し、あなたがENDPTプロパティを使用するプロキシの一部を表示することができます? – ophychius

+0

プロパティendptをログに記録し、有効かどうかを確認してください。このような長い行を混乱させるのは本当に簡単です。 – simar

答えて

0

Xpathエンドポイントは、レジストリまたはローカルエンドポイントのいずれかのキー表現です。つまり、リソースを指します。

あなたが実際に必要なことは、デフォルトのエンドポイントとエンドポイントの値を持つ「へ」ヘッダーです:

<header name="To" expression="get-property('endpt')"/> 
<send> 
    <endpoint> 
     <default/> 
    </endpoint> 
</send> 
+0

これは動作していますが、$ bodyは定義されたエンドポイントに送信されません。 私の理解は、デフォルトでsend mediatorは$ bodyを定義されたエンドポイントに送信します。 \t <プロパティ式= "$ CTX:ENDPT" 名前= "sendvalue" のxmlns:NS = "のhttp://org.apache.synapse/xsd" /> \t \t \t \t <ヘッダー式= "GET-プロパティ( 'ENDPT')」名前= "へ" のxmlns:NS = "のhttp://org.apache.synapse/xsd" /> \t \t \t \t \t \t \t \t \t \t

+0

おそらくあなたの設定をあなたの質問に追加できますか? –

+0

質問で掲示される、あなたはそれで私を助けてくれますか? –

関連する問題