1

私はwso2esb4.7.0 を使用しています。そのために wso2esb を使用して 2 つの数値を加算したいのですが、プロキシを作成しましたが、機能していません。プロキシは次のようになっています。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="Addition"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="Value1"
                   expression="//Value1/text()"
                   scope="default"
                   type="STRING"/>
         <property name="Value2"
                   expression="//Value2/text()"
                   scope="default"
                   type="STRING"/>
         <property name="Result"
                   expression="fn:sum(get-property('Value1'),get-property('Value2'))"
                   scope="default"
                   type="STRING"/>
         <log>
            <property name="RESULT" expression="get-property('Result')"/>
         </log>
      </inSequence>
      <outSequence/>
   </target>
   <description/>
</proxy>

結果にエラーが表示されることをログに記録しました:

ERROR - SynapseXPath Evaluation of the XPath expression fn:sum(get-property('Value1'),get-property('Value2')) resulted in an error
org.jaxen.FunctionCallException: sum() requires one argument.
    at org.jaxen.function.SumFunction.call(SumFunction.java:99)
    at org.jaxen.expr.DefaultFunctionCallExpr.evaluate(DefaultFunctionCallExpr.java:177)
    at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102)
    at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:674)
    at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:213)
    at org.jaxen.BaseXPath.evaluate(BaseXPath.java:172)

そして私もこれで試しました

<property name="Result"
                       expression="fn:sum(//Value1/text(),//Value2/text()))"
                       scope="default"
                       type="STRING"/>
                            Even this is also giving errors how would i reach to addition goal and my curl command like this

 curl -v -H "Accept: application/json" -H "Content-Type:application/json" -H "ModifiedOn:0"  -H "userid:-1899999899" -H "username:vikash|214057357158656" -H "password:gbadmin" -d '{"Value1":"2","Value2":"45"}' http://youtility2-desktop:8282/services/Addition
4

2 に答える 2

1
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="Addition"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="Value1"
                   expression="//Value1/text()"
                   scope="default"
                   type="INTEGER"/>
         <property name="Value2"
                   expression="//Value2/text()"
                   scope="default"
                   type="INTEGER"/>
         <script language="js">
            var value1 = parseInt(mc.getProperty("Value1"));
            var value2 = parseInt(mc.getProperty("Value2"));
            var result = value1 + value2;
            mc.setProperty("Result", result);
         </script>
         <log>
            <property name="RESULT" expression="get-property('Result')"/>
         </log>
      </inSequence>
      <outSequence/>
   </target>
   <description/>
</proxy>
于 2013-10-23T12:05:18.047 に答える
1

これを実現するには、スクリプト メディエーターを使用できます。最初に、上記で行ったように 2 つの値を設定できます。次に、スクリプト メディエータでそれらを追加し、必要なプロパティに設定できます。

このアプローチでプロキシを完成させます。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="Addition"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="Value1"
                   expression="//Value1/text()"
                   scope="default"
                   type="INTEGER"/>
         <property name="Value2"
                   expression="//Value2/text()"
                   scope="default"
                   type="INTEGER"/>
         <script language="js">
            var value1 = mc.getProperty("Value1");
            var value2 = mc.getProperty("Value2");
            var result = value1 + value2;
            mc.setProperty("Result", result);
         </script>
         <log>
            <property name="RESULT" expression="get-property('Result')"/>
         </log>
      </inSequence>
      <outSequence/>
   </target>
   <description/>
</proxy>
于 2013-10-23T11:25:38.317 に答える