在《当GIS遇上国产化,跨平台终端GIS开发应用初体验》中,我们为大家介绍了面对国产化环境如何基于MapGIS Objects Java SDK开发跨平台桌面GIS应用。伴随着互联网技术的发展和国产化信创进程的不断深入,越来越多的WebGIS应用要求国产化的生产环境,在此背景下,国产化GIS服务器——MapGIS IGServer九州便可以大显身手了。凭借MapGIS统一的跨平台GIS内核,IGServer九州支持目录服务、地图服务、要素服务和分析服务的高性能发布、管理与聚合,与MapGIS Client for JavaScript前端二次开发SDK相结合全面支撑国产化WebGIS应用开发和部署。
值得一提的是,GIS在为各行业应用提供底层服务时,其基础通用功能却往往不能满足复杂多变的应用需求,基于此痛点,MapGIS IGServer九州提供服务扩展机制,从服务层实现需求功能。
使用什么技术开发?
运行于GIS服务器上的拓展服务其本质上就是“服务”,也就是大家在Web开发过程中经常接触到的WebService,所以在进行IGServer拓展服务开发时只不过是在通常的Web服务基础上添加了一些GIS功能,我们需要注意的仅仅是使用什么框架来编写服务。
了解MapGIS产品的朋友可能都知道,运行于Windows平台的MapGIS产品基本上是基于.NET框架开发的,所以对应的IGServer for Windows服务器在进行服务拓展时使用的是.NET框架下的WCF技术,而国产化环境下的IGServer九州则有所不同,由于是基于Java语言开发的跨平台产品,所以在进行服务拓展时使用的是Java中的Apache CXF框架。
如何开发拓展服务?
编写拓展服务本身比较简单,只要将所需的功能代码封装到对应的接口中即可,难点在于需要对CXF框架和服务中使用的第三方库有基础的掌握,所以存在一定的开发门槛。
首先,服务推荐使用Maven进行项目构建和依赖管理,包括完成服务代码编写后的打包都需要用到Maven工具。
其次,需要引入一些必要的依赖,如插件框架pf4j、Java Rest Service标准jakarta.ws.rs、日志框架slf4j等。此外,为了在IGServer中实现服务的管理和调用,还需引入IGServer的拓展接口server-api。
图 2 拓展服务必须的依赖
IGServer中使用的依赖版本以及上面提到的server-api可将IGServer文件夹lib目录下的igserver-webapp.jar解压,见目录BOOT-INF/lib下的jar包及其对应版本。
接下来,便是编写拓展服务功能代码的过程,主要有以下三个步骤:
◆创建plugin类,继承org.pf4j中的Plugin。IGServer拓展服务中的功能模块是以插件的形式加载和使用的,示例如下
◆创建Rest扩展服务接口,按照Java Rest Service标准注解@Path、@GET、@QueryParam,示例如下
◆创建Rest扩展服务实现类,必须添加注解@Extension,必须实现Rest扩展服务接口RestServiceExtension,该接口在前面提到的server-api中,示例如下
最后,完成代码编写后即可将服务打包成jar包,用于后续的服务发布。推荐使用打包工具maven-assembly-plugin,在Maven项目的pom.xml中添加如下配置即可:
图 5 打包插件配置
其中必须指定插件的属性,注意插件id保证唯一性,class为Plugin实现类,如上面的例子中是“DemoPlugin”,示例如下:
服务发布与测试
1-发布服务
拓展服务打包完成后,会生成插件jar包,针对MapGIS IGServer九州的版本不同会有不同的加载方式:
◆在10.5.4.xx版本IGS九州中,可通过Server Manager发布拓展服务,并设置服务前缀等信息,与.NET版本IGS发布拓展服务类似;
◆在10.5.6.xx新版本中,可通过将拓展服务jar包直接放入IGServer安装目录下的plugins文件夹内,在IGS启动时服务会自动加载。
2-调用服务
发布完成后,服务的调用在不同的IGServer版本环境中也略有不同:
◆在10.5.4.xx版本中,因为可以在Server Manager中设置服务前缀等信息,所以调用时的请求需要在端口之后添加服务前缀,如下:
“https://ip:port/服务前缀/路径名/方法名?参数”
◆在10.5.6.xx版本中,由于服务是通过放入文件夹中自动加载的,所以相对于上面的请求方式少了设置的服务前缀,可直接通过path调用,如:
“https://ip:port/Path/method?param=”
其中,以上URL中的“路径名”、“Path”等均为代码编写过程中在第二步创建服务接口时设置的内容。
以上,我们为大家详细介绍了关于MapGIS IGServer九州的拓展服务开发指南,更多二次开发产品技术介绍将在后续逐一展开。
随着GIS产品的不断创新发展,GIS平台二次开发技能需求愈发凸显。未来,中地数码将始终践行以“GIS平台+生态发展”的融合创新战略打造GIS生态圈,积极拥抱业内合作伙伴,聚焦二次开发服务,为用户带来更加高效的二次开发技能培训及实战演练,满足用户“简便、易用、高效”的二次开发诉求。