基于 JAX-RS 机制扩展 |
SuperMap iServer 不仅提供了 REST 服务,将大量 GIS 功能以资源的形式发布出来,而且提供了一套扩展机制,使用户能够方便地将自己的应用添加至 SuperMap iServer 服务器上,实现自定义的资源,从而成为 REST 服务的一部分。
SuperMap iServer 目前有两种方式提供 REST 服务,即基于 Restlet 机制和基于 JAX-RS 机制,进行扩展时,要根据功能模块的实现方式采用不同的扩展方法。
基于 JAX-RS 机制实现 REST 资源的模块有:空间分析模块。
SuperMap iServer 提供了 JAX-RS 框架(参见:JAX-RS 简介)下的资源扩展机制,用于 REST 服务的扩展:基于 JAX-RS 机制的功能模块(空间分析模块)主要扩展点包括:
以上扩展点的扩展流程如下:
代码实现。
新资源基于 com.supermap.services.rest.resources.JaxAlgorithResultSetResource 或 com.supermap.services.rest.resources.JaxrsResourceBase 实现;
表述生成器基于 javax.ws.rs.ext.MessageBodyWriter 实现;
参数解析器基于 javax.ws.rs.ext.MessageBodyReader 实现。
配置。
扩展表述生成器、参数解析器时,需建一个与模块同名的模块配置文件,直接配置表述生成器/参数解析器。
扩展新资源时,则需要新建 JAX-RS 资源配置文件,并把路径写到模块配置文件的 resourceFiles 项中。
这里以扩展新的表述生成器 FakeKMLEncoder 、扩展新的参数解析器 FakeJsonDecoder 、扩展新资源 myBuffer 为例进行了介绍,源码可在以下位置获取:%SuperMap iServer_HOME%\samples\code\ExtendExist_JSR,作为一个整体的工程文件,用户只需把工程导入并编译后导出为 JAR 包(参见:extendexist_jsr.jar),然后放在 %SuperMap iServer_HOME%\webapps\iserver\WEB-INF\lib 下,重启 iServer 即可完成部署。