SuperMap iServer REST资源(JAX-RS)扩展机制简介

来源:互联网 发布:网站内容seo吗 编辑:程序博客网 时间:2024/05/21 10:08

作者:MR.

    SuperMap iServer 不仅提供了 REST 服务,将大量 GIS 功能以资源的形式发布出来,而且提供了一套扩展机制,使用户能够方便地将自己的应用添加至 SuperMap iServer 服务器上,实现自定义的资源,从而成为 REST 服务的一部分。
    SuperMap iServer 目前有两种方式提供 REST 服务,即基于 Restlet 机制和基于 JAX-RS 机制,进行扩展时,要根据功能模块的实现方式采用不同的扩展方法。
    基于 Restlet 机制的iServer REST资源扩展请参考博客:SuperMap iServer REST资源(Restlet)扩展机制简介 ,本文介绍基于 JAX-RS 机制的iServer REST资源扩展。基于 JAX-RS 机制实现的 iServer REST 资源模块有:空间分析模块,提供的扩展形式如下:

• 新资源的扩展:扩展新的REST服务资源。• 表述生成器扩展:扩展新的表述格式。• 参数解析器扩展:扩展新的参数解析器。

基于JAX-RS 机制的REST资源扩展方式

    SuperMap iServer提供了两个抽象类供扩展新REST资源使用:
    com.supermap.services.rest.resources.JaxrsResourceBase
    com.supermap.services.rest.resources.JaxAlgorithResultSetResource

    前者(JaxrsResourceBase)是后者(JaxAlgorithResultSetResource)的父类,后者在前者的基础上实现了POST请求的处理,使支持POST请求及子资源(请求参数returnContent=false时创建子资源存储结果)。
    扩展时实现上述两个类之一即可,两个类的类参考详见iServer 6R帮助文档(百度盘:链接:http://pan.baidu.com/s/1c2KhPhY 密码:kfsx)。

    以JaxAlgorithResultSetResource为例,扩展的基本方法如下:

/**  * @Path 指定自定义资源的 URI,从资源根目录算起, * 在 iServer 中,基于 JAX-RS 框架实现的 REST 资源根目录为: * http://<server>:<port>/iserver/services/<servicecomponent>/<serviceinterface> * 其中 servicecomponent 是 iServer 三层体系结构中的服务组件, * serviceinterface 是该服务组件绑定的服务接口(参见:服务的 URI 设置),比如:restjsr * restjsr 是默认的 JAX-RS REST 服务接口。 */@Path("/spatialanalyst/geometry/myResource")public class MyBufferResultsResource extends JaxAlgorithResultSetResource<T> {    // 用于标志存储在对象仓库中对象类型。    private static final String ALGORITHNAME = "本算法名";    /**     * 本算法名称,用于存取算法结果。     */    @ Override    protected String getAlgorithmName() {        return ALGORITHNAME;    }    /**     * 实现父类的 runArithmetic ,给出客户端发送 HTTP POST 方法时,需要处理的业务逻辑     * 父类的Post 方法将会调用该方法。     */    @ Override    protected Object runArithmetic(T params) {    // TODO    }}

    其中泛型T代表POST请求体参数表示的对象,runArithmetic方法返回值即返回给客户端的结果。
    扩展完成配置到iServer即可,资源配置请参考 SuperMap iServer REST资源(Restlet)扩展机制简介。
    在iServer帮助文档:开始 > iServer 开发与扩展指南 > 扩展 iServer > 现有 REST 资源扩展 > 基于 JAX-RS 机制 可以找到一个扩展的示例。