Wso2 ESB GET PROXY NAME

时间:2012-09-06 13:06:42

标签: soap wso2 wso2esb esb orchestration

我想知道如何在序列中获取代理的名称:

<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>

修改 为了获取代理的名称(应该包含在标题'To'中,我在代理的序列中尝试这个:

<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>

不起作用,有什么建议吗?

3 个答案:

答案 0 :(得分:2)

这将返回代理名称。

<log level="custom"> <property name="ProxyName" expression="$ctx:proxy.name"/></log>

答案 1 :(得分:1)

解决了一个非常简单的问题:get-property('To')

答案 2 :(得分:0)

Nuvio,

我只是想知道这样做的真正要求是什么,因为特定代理服务的名称保持静态,而特定服务完全由服务提供。但是,如果您真的想要这样做,更简单的方法是在序列的开头使用静态属性(使用属性介体)并为其分配代理名称。或者,您可以使用表达式“$ header / wsa:To”提取“To”标头的值,其中“wsa”对应于相关的寻址命名空间,然后编写正则表达式以提取服务名称。 / p>

干杯, Prabath