2012-09-06 109 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>