MapGIS IGServer九州-駕馭國產化環境下的拓展服務開發
在《當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生態圈,積極擁抱業內合作伙伴,聚焦二次開發服務,為用戶帶來更加高效的二次開發技能培訓及實戰演練,滿足用戶“簡便、易用、高效”的二次開發訴求。