【问题标题】:WSO2 Data Service Server error INCOMPATIBLE_PARAMETERS_ERRORWSO2 数据服务服务器错误 INCOMPATIBLE_PARAMETERS_ERROR
【发布时间】:2017-01-31 08:51:13
【问题描述】:

我正在使用 WSO2 ESB 和 DSS,我已经设置了 DSS 服务并对其进行了测试,它使用以下 URL 工作

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>

【问题讨论】:

    标签: wso2 wso2esb wso2dss


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      通过以下方式解决了问题

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

      【讨论】:

        【解决方案3】:

        最新版本的 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>
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 我已经在日志调解器之外使用属性 uri.var.ID 进行了尝试,但它仍然不起作用。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多