2012-09-06 165 views
1

我想知道我可以在使用中获得代理的名称序列:WSO2 ESB GET代理名称

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

编辑 为了获得代理的名称(这应包含在报头“到”我想这是一个代理的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> 

不起作用,任何建议,请

回答

1

解决了一个非常简单:获得属性( '至')

+0

很好的发现!但是,即使你使用前面提到的方法,我之前提到的xpath也在引擎盖下进行了评估。唯一的区别是,通过填充消息上下文属性,用户可以更容易地检索头“To”的值。欢呼声,Prabath –

0

Nuvio,

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

干杯, Prabath

+0

我想用代理名称作为唯一标识符连接外部DB – nuvio

+0

您好,我无法工作,如何标题提取到:我做的属性与$头/ WSA:要,但它不输出任何东西,wsa = http://org.apache.synapse/xsd – nuvio

+0

请Prabath帮助我解决这个问题:http://stackoverflow.com/questions/12583097/wso2-esb-unsupported-media-type – nuvio

1

这将返回代理名称。

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