1

シーケンスで使用されているプロキシの名前を取得する方法を知りたい:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="PROXYNAME" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <property> *GET-NAME OF THIS PROXY...* </property>
      </inSequence>
   </target>
   <publishWSDL uri="http://localhost/Test2/Service.asmx?wsdl" />
</proxy>

EDIT プロキシの名前を取得するために(ヘッダー「To」に含まれている必要があります)、プロキシのinSequenceとしてこれを試しています:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="testsequence">
   <property xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="p1" expression="$header/wsa:To" scope="default" />
   <log level="custom">
      <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="***output" expression="get-property('p1')" />
   </log>
</sequence>

動作しません。何か提案をお願いします。

4

3 に答える 3

2

これにより、プロキシ名が返されます。

<log level="custom"> <property name="ProxyName" expression="$ctx:proxy.name"/></log>
于 2014-07-22T17:01:08.353 に答える
2

非常に単純な方法で解決: get-property('To')

于 2012-09-10T13:42:54.927 に答える
0

ヌビオ、

特定のプロキシサービスの名前は静的なままですが、特定のプロキシサービスはサービスによって完全に提供されるため、これを行うための実際の要件は何でしょうか。ただし、本当にこれを実行したい場合は、シーケンスの先頭に静的プロパティ(プロパティメディエーターを使用)を設定し、プロキシ名を割り当てるのがより簡単な方法です。または、「wsa」が関連するアドレス指定名前空間に対応する式「$ header / wsa:To」を使用して「To」ヘッダーの値を抽出し、正規表現を記述してサービス名を抽出することもできます。

乾杯、プラバス

于 2012-09-08T08:47:58.340 に答える