1

ローカルエントリ(key = mapping_id_ep_v1.xml)として保存されているXMLスニペットの情報に基づいてメッセージをルーティングしようとしています。正しいエンドポイントを検索するために使用されるIDであり、メッセージ本文の一部です。

これは、IDをエンドポイントにマップするために使用されるXMLスニペットです。

<mappings>
    <mapping id="ep_1">http://localhost:8280/services/ep_1</mapping>
    <mapping id="ep_2">http://localhost:8280/services/ep_2</mapping>
    <mapping id="ep_3">http://localhost:8280/services/ep_3</mapping>
<mappings>

次のステートメントを使用して、本文からIDを取得し、エンドポイントを検索します。

<property name="LOOK-UP" expression="//controleFile/id" />

次のエントリを順番に使用して、XMLファイルをプロパティファイルにロードできます。

<property name="MAPPING" expression="get-property('mapping_id_ep_v1.xml')" />

次のステートメントを使用してプロパティをログに記録します。

<log level="custom">
    <property name="Look-up" expression="get-property('LOOK-UP')" />
    <property name="Mapping" expression="get-property('MAPPING')" />
</log>

ここまでは順調ですね。MAPPINGプロパティから正しいエンドポイントを取得する方法を理解できませんでした。誰か助けてもらえますか?

4

3 に答える 3

2

別のアプローチを使用して質問を解決しました。それはbijfipriesに与えられた答えと一致しています。

プロキシに次を追加しました。

 <property name="MAPPING" expression="get-property('mapping_id_ep_v1')" />
 <property name="LOOK_UP" expression="//controlFile/id" />
 <log level="custom">
    <property name="MAPPING" expression="get-property('MAPPING')" />
    <property name="LOOK_UP" expression="get-property('LOOK_UP')" />
 </log>
 <script language="js" key="testScript_2" function="getEndpointByID" />
 <log level="custom">
    <property name="EP" expression="get-property('EP')" />
 </log>

これはmapping_id_ep_v1の内容です:

<mappings>
    <mapping id="ep_1">http://localhost:8280/services/ep_1</mapping>
    <mapping id="ep_2">http://localhost:8280/services/ep_2</mapping>
    <mapping id="ep_3">http://localhost:8280/services/ep_3</mapping>
<mappings>

これはTestScript_2のコードです:

<x>

  function getEndpointByID(mc) {
     var xml = new XML(mc.getProperty('MAPPING'));
     var look_up = new XML(mc.getProperty('LOOK_UP'));
     var ep = xml..mapping.(@id == look_up);
     mc.setProperty('EP', ep + '');
  }

</x>

プロキシはマッピングxmlをプロパティにロードします。このプロパティはjavascriptコードでXMLに変換され、LOOK_UPを使用して正しいエンドポイントが取得されます。

これが他の誰かに役立つことを願っています。

よろしく、nidkil

于 2012-06-18T11:17:38.920 に答える
0

私も同じような状況にあります。問題は、プロパティコンテンツに対してxpath式を実行できないことのようです。

xmlをプロパティにロードした後、Javascriptスクリプトを使用して、必要なことを簡単に実行できます。Javascript + e4xは、xpath式によって変数のXMLコンテンツにアクセスする簡単な方法を提供します。

于 2012-06-15T12:13:02.060 に答える
0

はい、これは制限です。実際には、これはエンリッチメディエーターの機能である必要があります。次のESBリリースでこれを修正するための機能リクエストを作成します。

今のところ、これは次の方法で実行できます。

  • 現在の石鹸のペイロードを保持する:エンリッチを使用する
  • 現在の本文をプロパティのコンテンツに置き換えます-エンリッチ
  • 現在の本体に対してxpathを評価し、必要なコンテンツを抽出します。(EPとして使用)-プロパティ
  • 保存されたペイロードでメッセージ本文を復元します-強化します

私は知っています...それはハックです:)

于 2012-06-16T08:13:47.760 に答える