在代理中介中,get-property('To')返回意外值

时间:2012-11-28 14:09:41

标签: wso2esb ws-addressing

我对WSO2 ESB中介有一个奇怪的问题。 产品版本: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>

当我尝试使用soapUI 4.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

1 个答案:

答案 0 :(得分: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 中获取属性。