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>

编辑 为了获得代理的名称(它应该包含在标题'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

用一个非常简单的方法解决:get-property('To')

于 2012-09-10T13:42:54.927 回答
2

这将返回代理名称。

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

努维奥,

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

干杯,普拉巴斯

于 2012-09-08T08:47:58.340 回答