集成到经典版 iServer |
领域空间信息服务部署于经典版 iServer 中,即将其实现构建的 jar 包部署到 iServer 的过程。服务器启动时,会根据 jar 包中内置的 GIS 服务自描述信息提取出领域空间信息服务的元信息,并自动注册到服务管理模块中。同时,iServer 从配置模块中读取服务配置,并据此实例化服务内部的各个组件,装配出领域空间信息服务实例,注册到内置的服务注册中心,从而实现领域空间信息服务的自动发现、装配与启动。
用户可通过访问 http://<server>:<port>/iserver/manager 对自己扩展的领域模块进行自定义模块的配置管理。
集成时,除领域模块实现类外,还需要添加用于管理界面的 JS 文件(目前支持简体中文和英文两种语言的管理界面配置,分别是以 zh_CN.js 结尾和以 en_US.js 结尾的 js 文件)和用于标识资源模块的元信息文件。启动 SuperMap iServer 服务前,需要把领域模块实现类及相关文件复制到 %SuperMap iServer_HOME%\webapps\iserver\WEB-INF 下(如果是 Jar 包形式,放在 lib 目录下;如果是 class 文件形式,则放在 classes 目录下)。通过管理界面配置领域服务的步骤如图1所示。
图1 通过管理界面配置领域模块的流程
元信息文件(*.properties)用于定义领域模块,名称为领域模块的类名,如“TemperatureProvider.properties”,编码格式为 utf-8,各层模块的元信息放置位置如下:
元信息内容形式如下:
implementation=<领域模块实现类全路径>
paramType=<对应的领域模块配置类全路径>
alias=<领域模块别名>
以 zh_CN.js 结尾和以 en_US.js 结尾的 js 文件用于在 Web 界面上显示领域模块的配置项,支持简体中文和英文两种语言,可以通过设置浏览器的首选语言找出符合的 js 文件,编码格式为 utf-8,放置在 *.jar(或 classes)/ext/js 目录,内容形式如下:
res.<领域模块实现类全路径> = [<参数配置对象1>,<参数配置对象2>,……];
typeToDisplayMapping<领域模块实现类全路径> = "领域模块别名";
其中,typeToDisplayMapping 表示将领域模块实现类全路径信息映射成对应的的领域模块别名信息。
SuperMap iServer 提供的参数配置对象有:
configParam 对象可以通过 new configParam(name,chName,fileType,isNecessary) 构建,需根据管理界面显示的语言类型配置各个参数对象,如果语言类型为英文,对应的参数配置对象也需为英文。各项的含义如表1所示:
表1 configParam 的参数
参数名称 | 描述 |
name | 配置类中的参数名。 |
chName | 反映在页面上的参数描述。 |
fileType | 参数项的类型。可以取 Text、Select、File、Checkbox、Password、Object、ObjectArray 或 Array 。各类型的效果参见表2。 |
isNecessary | 参数是否必须,true 表示必填,false 表示可选。 |
值 | 描述 |
Text | 文本类型,直接输入文字。 |
Select | 选择类型,表现为可选择的下拉框。 |
File | 文件类型,表现为文件选择框。 |
Checkbox | 表现为复选框。 |
Password | 密码类型。如添加 WMS 地图服务提供者界面中的“访问服务的密码”。 |
Object | 可以包含多个子参数的对象类型。如添加 WMS 服务接口界面中的“服务描述信息”。 |
ObjectArray | 对象数组类型,可以添加多个 Object 对象。如添加本地地图服务提供者界面中的“地图默认设置列表”。 |
Array | 数组类型,表现为列表框。 |
optionsConfigParam 对象可以通过 new optionsConfigParam(name, chName, fileType, isNecessay, options) 构建,各参数含义如表3所示:
表3 构造 optionsConfigParam 对象所需的参数列表
参数名称 | 描述 |
name | 配置类中的参数名。 |
chName | 反映在页面上的参数描述。 |
fileType | 参数项的类型。可以取 Text、Select、File、Checkbox、Password、Object、ObjectArray 或 Array 。各类型的效果参见表2。 |
isNecessary | 参数是否必须,true 表示必填,false 表示可选。 |
options | 用于存放可选择的值。 |
defaultConfigParam 对象可以通过 defaultConfigParam(name, chName, fileType, isNecessay, defaultValue) 构建,各参数含义如表4所示:
表4 构造 defaultConfigParam 对象所需的参数列表
参数名称 | 描述 |
name | 配置类中的参数名。 |
chName | 反映在页面上的参数描述。 |
fileType | 参数项的类型。可以取 Text、Select、File、Checkbox、Password、Object、ObjectArray 或 Array 。各类型的效果参见表2。 |
isNecessary | 参数是否必须,true 表示必填,false 表示可选。 |
options | 用于存放可选择的值。 |
defaultValue | 用于存放默认值。 |
下面以集成一个领域服务提供者到 SuperMap iServer 配置管理器为例,介绍整个集成和配置的流程。
在扩展领域服务的示例中,有一个温度服务提供者,其实现类为:com.supermap.sample.temprature.TempratureProvider,对应的配置类为:com.supermap.sample.temprature.FileSetting,其中 FileSetting 配置类中有一个属性 filePath 是对应的配置项。
TempratureProvider 类是一个服务提供者实现类,对应 SuperMap iServer 中的服务提供者层,定义该服务提供者类型的别名为“温度服务提供者”。
编写模块实现类,并进行编译。
编写元信息文件,即 TemperatureProvider.properties 如下:
implementation=com.supermap.sample.temperature.TemperatureProvider
paramType=com.supermap.sample.temperature.FileSetting
alias=温度服务提供者
编写 FileSetting_zh_CN.js 文件如下:
res["com.supermap.sample.temperature.TemperatureProvider"] = [new configParam("filePath", "温度信息文件的路径", "Text", false)];
typeToDisplayMapping["com.supermap.sample.temperature.TemperatureProvider"] = "温度服务提供者";
如果管理页面需要支持英文,还需编写 FileSetting_en_US.js 文件,内容同上,只需要把相应内容中的中文改成对应的英文即可。
将 TemperatureProvider.properties、FileSetting_zh_CN.js、FileSetting_en_US.js 跟实现类编译结果一起打成 Jar 包,结构如下图所示:
图2 Jar 包结构图
将 Jar 包(如:temprature_SCSP.jar)复制到 %SuperMap iServer_HOME%\webapps\iserver\WEB-INF\lib 目录下,重启 SuperMap iServer 服务,即可完成温度服务提供者模块在 SuperMap iServer 服务管理器中的集成。
注意:使用 Eclipse 打 Jar 包时,需要勾上“Add directory entries”一项,如下图所示:
图3 Eclipse 打 Jar 包
以浏览器语言是简体中文为例,在“服务/服务提供者”页面点击“创建服务提供者”,填写服务提供者名称,选择服务提供者类型为“温度服务提供者”(该别名在元信息中指定,该别名显示的语言类型在 FileSetting_zh_CN.js 文件中指定),下面即会显示温度服务提供者对应的配置项(模块配置类中的属性,别名及显示样式在 FileSetting_zh_CN.js 文件中指定),填写配置信息,如下图所示:
图4 创建温度服务提供者
点击确定,即完成一个类型为“温度服务提供者”的服务提供者 tempratureProvider 的创建。