2

WSO2ESBメディエーションに奇妙な問題があります。製品バージョン:WSO2 ESB 4.5.1

メディエーションコードは次のようになります。

<proxy xmlns="http://ws.apache.org/ns/synapse" name="CacheWSAPrx" transports="https,http" statistics="disable" trace="enable" startOnLoad="true">
   <target>
  <inSequence>
     <log level="full">
        <property xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" name="WSA_To" expression="get-property('To')"/>
     </log>
     <send>
        <endpoint>
           <address uri="http://localhost:9083/TestCacheWeb/sca/MaketWSSoapExport1"/>
        </endpoint>
     </send>
  </inSequence>
  <outSequence>
     <send>
        <endpoint>
           <default/>
        </endpoint>
     </send>
  </outSequence>
 </target>
 <publishWSDL key="conf:/repository/wsdl/service.wsdl"/>
 <description></description>
 </proxy>

このサービスをsoapUI4.0.1で呼び出そうとすると、ログメディエーターはWSA_Toプロパティ値(get-property('To')関数で入力)が/ services/CacheWSAPrxであることを出力します。これは私にとって奇妙で予想外のことです。soapUIを介して送信されたSOAPリクエストには、Toヘッダーに別の値が含まれているためです。

<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://eisgkh.ru/maket/ws/Maket.WS2.Service.Action</wsa:Action><wsa:To>http://www.exampleaddr.com</wsa:To></soapenv:Header>

だから、私の質問は:get-property('To')が/ services / CacheWSAPrx値を返すのはなぜですか、 http://www.exampleaddr.comを返さなければならないと思いますか?

4

1 に答える 1

0

いいえ。 http://www.exampleaddr.comを取得したい場合、get-propertyは必要な式ではありません。http://rajikak.blogspot.com/2010/04/xpath-functions-and-properties-avilable.htmlに従ってください。必要なものを取得するには、 $header/wsa:Toのようなものが必要になる場合があります。get-propertyを使用すると、私が思うに MessageContext からプロパティを取得します

于 2012-11-30T08:06:15.477 に答える