Server Object Extensions(以下简称SOE)是Server Object的扩展,比如MapServer、GPServer等等。和Utility Objects不同,SOE只在Server Object被创建的时候被初始化,它的生命周期和Server Object是相同的。相比Utility Objects,SOE有以下的一些特点:
Ø 开发人员不需要手动实例化SOE,SOE是在Server Object被创建的同时被实例化的
Ø ArcGIS Server的管理程序可以显示SOE的参数配置
Ø SOE的运行信息将被记录到ArcGIS Server的日志中去
Ø SOE的功能可以通过SOAP访问
更直观一点,让我们看一下下面这张截图,这是一个添加了一个自定义SOE的Map Service管理界面:
图 30 添加了SOE的Map Service
是不是可以把SOE理解成一个服务的自定义Capability?似乎ESRI就是这样理解的。那下面我们就通过自定义一个新的Capability来看看SOE的用法。
首先,我们使用IDE插件来帮助我们新建这个SOE,打开菜单的【File】-【New】-【Server Object Extension】打开新建窗口,如图 31;然后在如图 32的属性页中做些自定义的编辑,ArcGIS插件会自动新建一些类和配置文件。
图 31 新建SOE窗口
图 32 编辑一些SOE的属性
好,现在虽然我们没有添加什么实质的功能代码,但是SOE的框架已经起来了,让我们尝试部署这个SOE到ArcGIS Server中去。
首先,右键工程,选择【Export】,找到Java文件夹下的JAR文件选项,把这个SOE导出成jar包;然后,复制这个jar文件到 %ARCGISHOME%/java/lib/ext 目录下;最后,需要用一个工具添加这个SOE到Map Service,这个工具叫SOMManager,你可以在 %ARCGISHOME%/java/tools目录下打开控制台,然后执行以下命令:
soemanager -a [server name] [domain name] [username] [password] [fully qualified SOE name] [SOE display name]
比如上面在wuyf命名空间下新建了一个NMEAServerObjectExt类,因此大概的命令就是如下这个样子的:
soemanager -a localhost localhost arcgismanager passwd wuyf.NMEAServerObjectExt NMEA
好了,下面在添加一个新的Map Service的时候就可以看到一个新的Capability了:
图 33 自定义的NMEA Capability