【问题标题】:WSO2 Data Services Server REST configurationWSO2 数据服务服务器 REST 配置
【发布时间】:2014-04-02 20:41:59
【问题描述】:

第一次发帖,希望我做对了。 :-)

而且,WSO2DSS 的新手...

我想配置 WSO2DSS 以公开 REST 服务,例如:

http://localhost/svcendpoint/products
http://localhost/svcendpoint/products/computer
http://localhost/svcendpoint/products/computer/disks

每个 url 返回一个更精确的列表。我已经设置了三个查询/操作/资源,但没有得到预期的结果。

我得到第一个的列表,第二个的 Axis2“字符串索引超出范围”异常,第三个的列表。

我不确定是我自己,一个错误,还是错误的方法来做到这一点。任何帮助将不胜感激。

这是 .dbs 文件(如果有用,我可以包含异常堆栈跟踪):

<data name="MyDataService">
   <config id="MyDataSource">
      <property name="driverClassName">oracle.jdbc.driver.OracleDriver</property>
      <property name="url">jdbc:oracle:thin:xxxxxx</property>
      <property name="username">xxx</property>
      <property name="password">xxx</property>
   </config>
   <query id="MyCategoriesQuery" useConfig="MyDataSource">
      <sql>select distinct CAT_NM from T_FAM_BLMBRG_DATA_DICT order by CAT_NM</sql>
      <result defaultNamespace="http://test.org" element="categories" rowName="">
         <element column="FLD_MNM_NM" name="FLD_MNM_NM" xsdType="string"/>
         <element column="FLD_ID" name="FLD_ID" xsdType="string"/>
         <element column="DATA_LIC_CAT_NM" name="DATA_LIC_CAT_NM" xsdType="string"/>
         <element column="FLD_DESC_TX" name="FLD_DESC_TX" xsdType="string"/>
         <element column="CAT_NM" name="CAT_NM" xsdType="string"/>
         <element column="FLD_DFN_TX" name="FLD_DFN_TX" xsdType="string"/>
         <element column="FLD_DATYP_NM" name="FLD_DATYP_NM" xsdType="string"/>
         <element column="CRT_USER_ID" name="CRT_USER_ID" xsdType="string"/>
         <element column="CRT_TS" name="CRT_TS" xsdType="string"/>
         <element column="UPD_USER_ID" name="UPD_USER_ID" xsdType="string"/>
         <element column="UPD_TS" name="UPD_TS" xsdType="string"/>
      </result>
   </query>
   <query id="MyCategoryQuery" useConfig="MyDataSource">
      <sql>select * from T_FAM_BLMBRG_DATA_DICT where CAT_NM = :cat</sql>
      <result defaultNamespace="http://test.org" element="entries" rowName="">
         <element column="FLD_MNM_NM" name="FLD_MNM_NM" xsdType="string"/>
         <element column="FLD_ID" name="FLD_ID" xsdType="string"/>
         <element column="DATA_LIC_CAT_NM" name="DATA_LIC_CAT_NM" xsdType="string"/>
         <element column="FLD_DESC_TX" name="FLD_DESC_TX" xsdType="string"/>
         <element column="CAT_NM" name="CAT_NM" xsdType="string"/>
         <element column="FLD_DFN_TX" name="FLD_DFN_TX" xsdType="string"/>
         <element column="FLD_DATYP_NM" name="FLD_DATYP_NM" xsdType="string"/>
         <element column="CRT_USER_ID" name="CRT_USER_ID" xsdType="string"/>
         <element column="CRT_TS" name="CRT_TS" xsdType="string"/>
         <element column="UPD_USER_ID" name="UPD_USER_ID" xsdType="string"/>
         <element column="UPD_TS" name="UPD_TS" xsdType="string"/>
      </result>
      <param name="cat" sqlType="STRING"/>
   </query>
   <query id="MyCategoryFldQuery" useConfig="MyDataSource">
      <sql>select * from T_FAM_BLMBRG_DATA_DICT where CAT_NM = :cat and FLD_ID = :fld</sql>
      <result defaultNamespace="http://test.org" element="names" rowName="">
         <element column="FLD_MNM_NM" name="FLD_MNM_NM" xsdType="string"/>
         <element column="FLD_ID" name="FLD_ID" xsdType="string"/>
         <element column="DATA_LIC_CAT_NM" name="DATA_LIC_CAT_NM" xsdType="string"/>
         <element column="FLD_DESC_TX" name="FLD_DESC_TX" xsdType="string"/>
         <element column="CAT_NM" name="CAT_NM" xsdType="string"/>
         <element column="FLD_DFN_TX" name="FLD_DFN_TX" xsdType="string"/>
         <element column="FLD_DATYP_NM" name="FLD_DATYP_NM" xsdType="string"/>
         <element column="CRT_USER_ID" name="CRT_USER_ID" xsdType="string"/>
         <element column="CRT_TS" name="CRT_TS" xsdType="string"/>
         <element column="UPD_USER_ID" name="UPD_USER_ID" xsdType="string"/>
         <element column="UPD_TS" name="UPD_TS" xsdType="string"/>
      </result>
      <param name="cat" sqlType="STRING"/>
      <param name="fld" sqlType="STRING"/>
   </query>
   <operation name="MyCategoriesService">
      <call-query href="MyCategoriesQuery"/>
   </operation>
   <operation name="MyCategoryService">
      <call-query href="MyCategoryQuery">
         <with-param name="cat" query-param="cat"/>
      </call-query>
   </operation>
   <operation name="MyCategoryFldService">
      <call-query href="MyCategoryFldQuery">
         <with-param name="cat" query-param="cat"/>
         <with-param name="fld" query-param="fld"/>
      </call-query>
   </operation>
   <resource method="GET" path="category">
      <call-query href="MyCategoriesQuery"/>
   </resource>
   <resource method="GET" path="category/{cat}">
      <call-query href="MyCategoryQuery">
         <with-param name="cat" query-param="cat"/>
      </call-query>
   </resource>
   <resource method="GET" path="category/{cat}/{fld}">
      <call-query href="MyCategoryFldQuery">
         <with-param name="cat" query-param="cat"/>
         <with-param name="fld" query-param="fld"/>
      </call-query>
   </resource>
</data>

【问题讨论】:

    标签: rest wso2 wso2dss


    【解决方案1】:

    你需要调用如下所示的服务

    http://localhost:9763/services/SERVIVENAME.HTTPEndpoint/RESOURCEPATH/
    

    例如

    http://localhost:9763/services/MyDataSource.HTTPEndpoint/category/computer
    

    详情请参考[1]

    https://docs.wso2.org/display/DSS310/Exposing+Data+as+REST-Style+Resources

    【讨论】:

    • 是的,这就是我正在做的。问题不在于服务的调用,而在于某些调用导致异常的事实。我发布的第一个网址有效。第二个导致异常,第三个有效。查看 .dbs 中的资源块以了解它们是如何定义的。注意:我输入的 url 是“示例”,实际的 url 看起来像你写的。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多