ArcGIS Server服务扩展——Java篇_秦桐
时间:2025-04-30
时间:2025-04-30
arcgis学习
ArcGIS Server服务扩展——Java篇Esri中国(北京)有限公司秦桐
arcgis学习
SOEs介绍
arcgis学习
什么是SOEs
自定义功能访问方式
同SOC生命周期 通过ArcObjects访问地图和数据 与存储过程类似
SOAP(9.3.1+) REST(10+) DCOM(9-10)
arcgis学习
为什么创建SOEs 消除往复调用 数据紧密性 GUI紧密性
性能
功能性可重用性
充分利用ArcObjects ADF移植
跨平台,跨服务 最小重写
arcgis学习
SOEs使用场合
解决应用问题可降低开发难度项目及人员特点
作为程序一部分 解决性能或功能性问题 与Geoprocessing工具比较 (Model Builder+ Python)
Java(.Net)及AO开发能力 项目时间安排
arcgis学习
建立SOEs
arcgis学习
创建SOEs步骤
开发SOE设计SOE创建控制台程序
IMapServerDataAccess访问地图,图层数据
需要的对象和方法 SOE&REST参数和返回值
设计→实现 易于调试
arcgis学习
创建SOE
SOE for SOAP
扩展SOAPRequestHandler 生成WSDL 生成客户端proxy classes
SOE for REST
实现IRestRequestHandler 定义JSON schema 绑定业务到handleRESTRequest
arcgis学习
创建SOE演示
arcgis学习
部署-调试-测试 JAR文件清单中依赖库路径 *.jar→/java/lib/ext通过ArcGIS Server Manager或SOEManager注册完整帮助http://www.77cn.com.cn/aKLWfC
部署
调试
JavaConfigTool,启用Interop logging通过Server日志调试建议只保留一个服务完整帮助
测试
REST:使用Service Directory SOAP:使用Proxies
arcgis学习
调用SOEs
arcgis学习
调用SOE
客户端设计客户端实现
在Tasks基础上搭建模型 尽量重用API中现有对象 不要盲目暴露JSON对象
基于HTTP类库实现请求 解析结果(JSON) 转换为API内部对象(要素集,图像或原始类型 将FeatureSet加入GraphicsLayer
arcgis学习
调用SOE演示
arcgis学习
REST参数/返回值类型
JSON二进制任意类型
是字符串 可表示数值,日期
使用Base64编码 以字符串形式传输 使用Apache commons codec类解码
返回字节数组 客户端必须可以解译信息
arcgis学习
调用时状态
SOC无状态是否状态化方法一方法二
SOC是无状态架构
多次调用间无输入信息——无状态 调用间有输入信息——有状态
使用数据库 配置服务时提供参数给数据库 数据库中存储状态,只发送key
状态序列化→字符串 往复传递状态
arcgis学习
空的Server Context
空的Server Context SOE是否合适空地图
ADF程序可以处理与地图图层无关的AO业务 即使对于ADF程序也不适合
SOE数据紧密 建议自定义GP工具
建议用Geoprocessing工具