2

メッセージを受信するために jms トランスポートを使用するプロキシ サービスがあります。受信したメッセージは、http POST を使用してバックエンド REST サービスに送信する必要があります。以下は、メッセージに対して行われます

  1. 特定のフィールドを抽出する xslt 変換
  2. メッセージ タイプを application/json に設定します
  3. エンドポイントに送信

REST サービス エンドポイントには、jms からの入力メッセージの一部として提供される値の 1 つを使用して動的に追加されるパス パラメーターが必要です。URL は のようになります http://<server-ip>/service/<client>。ここで、「クライアント」の値はメッセージの一部として提供されます。

wso2 esb を使用してパス パラメータを動的に追加するにはどうすればよいですか?

4

2 に答える 2

2

あなたが探しているのはREST_URL_POSTFIX財産だと思います。このプロパティを設定すると、値が残りのエンドポイント URL に追加されます。

axis2 のスコープで次のように定義できます。

<property name="REST_URL_POSTFIX"
          expression="//client"
          scope="axis2"
          type="STRING"/>

これに関する例は、このガイドのUsing REST with a Proxy Service にあります。

編集: 以下は、curl を使用した POST 要求で単純なプロキシを使用した例です。コメント通りに提供します。ここでは、WSO2 Application Server の jaxrs_basic レスト サービスを呼び出しています。

curl -H "Content-Type: application/xml" -H "Accept: application/json" -d "<Customer><name>KasunG</name></Customer>" http://localhost:8281/services/new1/

.

curl -H "Content-Type: application/json" -H "Accept: application/json" -d "{ 'Customer' : { 'name' : 'KasunG' } }  " http://localhost:8281/services/new1/

.

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="new1"
       transports="https http"
       startOnLoad="true"
       trace="disable">
   <description/>
   <target>
      <inSequence>
         <property name="REST_URL_POSTFIX"
                   value="customers"
                   scope="axis2"
                   type="STRING"/>
         <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
         <switch source="$axis2:HTTP_METHOD">
            <case regex="GET">
               <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/>
            </case>
            <case regex="POST">
               <property name="messageType" value="application/json" scope="axis2"/>
               <property name="ContentType"
                         value="application/JSON"
                         scope="axis2"
                         type="STRING"/>
               <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
            </case>
            <default/>
         </switch>
         <send>
            <endpoint>
               <address uri="http://localhost:8888/jaxrs_basic/services/customers/customerservice"
                        format="rest"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <property name="messageType" value="application/json" scope="axis2"/>
         <send/>
      </outSequence>
   </target>
</proxy>
于 2013-04-29T11:46:00.167 に答える