0

WSO2 ESB に基本的な SOAP-to-REST プロキシ サービスを実装しようとしています。サードパーティの REST サービスは、次の形式でリクエストを受け入れます。

http://<MYURL>/simpleQuery/16783484?oslc.select=value1

問題は、操作名の形式が数値のみであることです。この場合は「16783484」です。XML 仕様が数値のみの要素名を制限しているため、payloadFactory メディエーターは <16783484> を XML 要素として持つことを許可しません。

<proxy xmlns="http://ws.apache.org/ns/synapse" name="CQProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory>
            <format>
               <16783484>
                  <oslc.select>$1</oslc.select>
               </16783484>
            </format>
            <args>
               <arg value="myvalue1"/>
            </args>
         </payloadFactory>
         <send>
            <endpoint>
               <address uri="http://<MYURL>/simpleQuery" format="get"/>
            </endpoint>
         </send>
         <drop/>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <send/>
      </outSequence>
   </target>
</proxy>

どうすればこれを克服できますか?

あなたの助けに感謝!

4

2 に答える 2

2

WSO2 サポート チームは、次の解決策を提案しました。サンダパありがとう!

その場合、エンドポイントの形式を「rest」に設定する必要があります。GET リクエストの場合は、'HTTP_METHOD' を GET として設定する必要があります。以下の例を参照してください。

例:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="CQProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <property name="REST_URL_POSTFIX" value="/getSimpleQuote?symbol=IBM" scope="axis2" type="STRING"/>
         <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/>
         <send>
            <endpoint>
               <address uri="http://localhost:9000/services/SimpleStockQuoteService/" format="rest"/>
            </endpoint>
         </send>
         <drop/>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <send/>
      </outSequence>
   </target>
   <description></description>
</proxy>
于 2013-03-08T14:06:27.910 に答える
0

このコメントは解決策を示唆するものではありませんが、これは悪い考えだと言えます :-) PayloadFactory の代わりに XSLT を使用して変換を試みることもできますが、これも XML パーサーを詰まらせる可能性があります。問題は、WSO2 製品が使用する多くのオープン ソース プロジェクト/ライブラリであり、仕様を尊重する他の場所に出くわす可能性があります。長期的には、仕様に準拠することで、他の外部ツール/システムと統合する際の頭痛の種が少なくなります。サービス名の前に少なくともアンダースコアが付くように残りのサービスを変更することは可能ですか?

于 2013-03-01T05:04:59.827 に答える