2013-07-26 30 views
0

我使用Wso2esb 4.7.0 我們選擇在此設置屬性使用JSON 我們如何設置如果XML 我們可以這樣設置如何使用XPath對JSON在wso2esb

<property name="username" 
        expression="//username/text()" 
        scope="default" 
        type="STRING"/> 

爲有效載荷工廠

<payloadFactory> 
      <format> 
       <p:login xmlns:p="http://authentication.services.core.carbon.wso2.org"> 
        <p:username>$1</p:username> 
        <p:password>$2</p:password> 
        <p:remoteAddress>$3</p:remoteAddress> 
       </p:login> 
      </format> 
      <args> 
       <arg expression="//username/text()"/> 
       <arg expression="//password/text()"/> 
       <arg expression="get-property('client_ip_address')"/> 
      </args> 
     </payloadFactory> 

我們如何使用JSON實現它,我試圖用這個屬性

<property name="faisal" expression="$name/text()" scope="default"/> 

,但它不工作,我們可以通過這個JSON通過Wso2dss請讓我知道

回答

1

如果您正在使用「ESB 4.7」它帶有默認的「JSON的支持,這意味着轉換爲「XML」應該發生。您將設置屬性與您傳遞'XML'的屬性相同。

<login><username>JohnDoe</username><pass>yourPass</pass><login> == {「login」:{「username」: 」JohnDoe」,  "pass" : "yourPass"}} 

    <property name="username" 
       expression="//login/username/text()" 
       scope="default" 
       type="STRING"/> 

另一種選擇,如果你想保持「JSON」消息完好無轉換爲XML從而節省了性能,你可以使用「計算器」,將工作。在服務器上需要執行幾項操作才能啓用此功能。未發表意見「MessageFormatter」 &「MessageBuilder」在axis2.xml(我提供的鏈接有那些細節)

<arg expression="$.login.username" evaluator="json"/> 

詳解&這裏舉例:http://docs.wso2.org/wiki/display/ESB470/PayloadFactory+Mediator

+0

我得到了你的觀點,但我的問題,我們如何才能讓財產我可以用這樣的

1

雖然你們要發送JSON輸入消息,在ESB服務中傳遞的消息是SOAP。因此在這種情況下也可以使用相同的屬性定義。

<property name="username" 
        expression="//username/text()" 
        scope="default" 
        type="STRING"/>