我想知道如何在序列中获取代理的名称:
<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>
不起作用,有什么建议吗?
答案 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