WSO2数据服务服务器错误INCOMPATIBLE_PARAMETERS_ERROR

时间:2014-08-01 14:08:26

标签: wso2 wso2esb wso2dss

我使用WSO2 ESB和DSS,我已经设置了DSS服务并对其进行了测试,并使用以下网址

http://10.248.40.85:9764/services/params/op/{Value goes here}

我的问题是从ESB调用它时它不起作用并抛出不兼容的参数错误。被调用的方式如下

<log level="custom">
    <property name="uri.var.ID" expression="$body/int:User/int:UserID/text()"/>
</log>
<send>
    <endpoint>
        <http method="get" uri-template="http://10.248.40.85:9764/services/params/op/{uri.var.ID}"/>
    </endpoint>
</send>

当记录uri.var.ID时,它返回预期的数字,但是当服务尝试调用端点时,它会抛出错误并说当前参数为空。

DSS服务资源是

<resource method="GET" path="op/{ID}">
    <call-query href="query2">
        <with-param name="ID" query-param="ID"/>
    </call-query>
</resource>

4 个答案:

答案 0 :(得分:1)

由于各种原因,可能会发生此问题。所以清单如下。

  1. 从ESB到Dss(客户端 - &gt; ESB-&gt; DSS )的有效负载不在 预期的结果。
  2. 呼叫错误的端口。
  3. 您没有从ESB调用正确的DSS服务。

答案 1 :(得分:1)

使用以下

解决了问题
<payloadFactory media-type="xml">
    <format>
        <p:operation2 xmlns:p="http://ws.wso2.org/dataservice">
            <xs:ID xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:ID>
        </p:operation2>
    </format>
    <args>
        <arg xmlns:xs="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml" expression="get-property('uri.var.ID')"/>
    </args>
</payloadFactory>
<call>
    <endpoint>
        <address uri="http://10.248.40.85:9764/services/params/operation2"/>
    </endpoint>
</call>

答案 2 :(得分:1)

最新版本的DSS支持查询参数列表中的默认参数值。 您能否尝试在数据服务(dbs)文件的查询参数列表中添加defaultValue="#{NULL}"

<query id="QUERY-ID" useConfig="DATA-SOURCE-ID">
    <sql>-------------SQL QUERY HERE -----</sql>
    <result ----------- >
        <element ------------ />  
    </result>
    <param defaultValue="#{NULL}" name="PARAM-NAME" ordinal="1" sqlType="INTEGER"/>
</query>

答案 3 :(得分:-1)

问题应该是您在日志调解器中定义了属性uri.var.ID。在外面定义并检查。