0

サード パーティ プロバイダーからの xml 応答を処理するように構成された Mule のインスタンスがあります。最近、プロバイダーが新しいリビジョンに移行したため、xml 応答が変更されました。ここで、応答が v1 実装か v2 実装かを識別し、適切なエンドポイントを呼び出して応答を処理する方法が必要です。

私が現在持っているものは次のとおりです。

<service name="processResponse">
...
    <outbound>
        <pass-through-router>
            <cxf:outbound-endpoint address="..." clientClass="..." wsdlPort="..." wsdlLocation="..." operation="..."/>
        </pass-through-router>
   </outbound>
</service>

ミュールにフィルターを追加して、サードパーティのリビジョンを識別し (おそらく応答の xml 名前空間を介して)、適切なクラスを呼び出すことをお勧めします。これの良い例は見つかりません。

誰かがこれを解決する方法の例を提供できますか?

4

2 に答える 2

1

バージョン変換が示されているこの例を見てください。

于 2010-07-09T16:10:16.367 に答える
0

最も単純な手段は、xpath フィルターを使用してルートをフィルター処理することだと思います。最初に各バージョンの vm サービスを定義します。次に、次のアウトバウンド エンドポイントを使用して、サービスを介してそれらにフィルターをかけます。キャッチオールは常に良い考えです。

<outbound>
  <filtering-router>
    <vm:outbound-endpoint ref="Version1"/>
    <expression-filter evaluator="jxpath" expression="/your/version1/xpath/descriminator"/>
  </filtering-router>
  <filtering-router>
    <vm:outbound-endpoint ref="Version2"/>
    <expression-filter evaluator="jxpath" expression="/your/version2/xpath/descriminator"/>
  </filtering-router>
  <forwarding-catch-all-strategy>
    <stdio:outbound-endpoint system="ERR"/>
  </forwarding-catch-all-strategy>
</outbound>
于 2011-06-01T21:17:57.887 に答える