在ArcGIS中作为粗粒度和数据进行交流的对象被称为Server Object.这些Server Object提供了对ArcGIS Server服务进行访问、操作、分析和显示数据的能力,例如:在通过Map Server Object访问地图内容,通过一个locator开发进行地图定位,通过GP Server Object可以进行地理处理,这些Server Object能为交通、通讯等行业提供地理信息服务:如地图服务、地理编码服务及GP服务。

但这些没有进行组装的ServerObject没法为行业提供完整的流程化处理,因此,在ArcGIS服务器中我们需要一个可扩展的框架,它允许创建可扩展的服务器对象,并构建定制解决方法,这种扩展服务器对象的开发方法叫SOE开发方法。

在ArcGIS 10.1中ArcGISServer不在支持DCOM方式的连接,这也就意味着我们不能通过本地方式的连接使用ArcObjects提供的更多功能,所以我们推荐这种新的方式来实现这些功能,这种方式就是SOE服务器对象扩展。

对于开发的必要性:SOE只需要创建一次,是存在于整个服务对象的生存期内的,所以它可以缓存信息、重复使用,同时也说明它开销也是非常昂贵的,在考虑是否有必要使用SOE进行扩展时也要考虑这点。

开发者的要求:比较适合那些有多种平台工作经验的开发者,开发一个SOE通常会用到AO、.NET或Java、REST或SOAP Web服务通信技术。

SOE支持SOAP(SOAP是构建web服务的一种手段,通过XML通信)和REST(表状性状态转移,可以充分利用Web服务是一个无状态的客户端通过URL进行资源定位,简化http协议约束)两种访问方式,其通过强大的AO来扩展服务对象,并可以在一个没有AO的客户端中运行,下面主要以Rest访问方式展开叙述。

1.     SOE存在于整个服务对象的生存期内,一个SOE通常在服务对象创建是初始化,并且在整个服务对象的生存期内只会被创建一次,SOE有两个必备接口,init()和shutdown().分别用于soe程序的初始化及注销,具体内容请见AO开发帮助手册。

2.在做SOE开发的时候,还必须理解@ServerObjectExtProperties注释,它是在进行SOE部署时,显示的注释对,具体解释如下:

ldisplayName—当你作为管理员进行ArcGIS Server管理时,这个名称会作为在ArcGIS Server Manager或者ArcMap Catalog窗口中的SOE显示名称。

ldescription—这个主要用于简单描述SOE的功能,使用方法,在ArcGIS Server Manager或者ArcMap Catalog部署窗口中会显示。

lproperties—这里主要是作为SOE程序的一些外部输入参数,用于和SOE程序进行交互,这个属性可以作为SOE程序运行的全局属性来进行使用。

lallSOAPCapabilities—When exposing your SOE as a web service, you cancreate functionality that can be enabled or disabled by an administrator ofArcGIS for Server. Such functionality is called a “web capability”. Thisparameter’s value is a comma-separated list that holds all capabilities exposedby an SOE.

ldefaultSOAPCapabilites—This parameter’s value lists all web capabilitiesthat are enabled on the SOE by default。

3)接口说明:

lcom.esri.arcgis.system.IObjectConstruct

这个接口是只有在ArcGIS Server Manager.中有必要输入属性,使其作为SOE的全局变量时才需要继承,它提供了一个非常简单的方法construct(),这个方法是在SOE创建之后,进行init()初始化之后调用,可以通过这方法获取输入参数。

lcom.esri.arcgis.system.IObjectActivate

这是一个可选的继承接口,除非你需要在服务Request请求之前或之后有逻辑性的操作,不由可以不需要继承这个接口。

·activate()—客户端做一次请求之前执行。

·deactivate()—客户端请求一次完成执行.

lcom.esri.arcgis.system.IRESTRequestHandler

如果你想使用Rest WebService作为你的SOE开发扩展的话,必须继承IRESTRequestHandler接口,这个接口提供了两个方法:

·handleRESTRequest()—每次进行Http请求时执行.

·getSchema()—用于在SOE运行时,询问ArcGIS REST handler资源及操作的层次结构。

如果你是用Eclipse向导来进行SOE开发的话,这两方法是自动生成的,这样你便可以专注于你的资源方法及操作方法的实施。

soe 开发 java_Java环境下SOE—Rest开发之1(初识)相关推荐

  1. 使用WSL开发Linux环境下的Python——python环境安装

    使用WSL开发Linux环境下的Python--Python环境安装 在上一章中介绍了WSL的安装,本章将介绍如何搭建基于WSL的python的开发环境. 附上WSL安装篇的链接:使用WSL开发Lin ...

  2. 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。

    软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...

  3. android studio输入框下划线,Android开发之TextView的下划线添加

    Android开发之TextView高级应用 Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大 ...

  4. 如何部署多云环境下VR快艇开奖号码采集官网的IT基础架构?

    在多云环境VR快艇开奖号码采集官网vip7.maltapi.com下,企业IT基础架构如何构建,是很多企业都在关心的话题.那么,到底如何去部署多云环境才算成功? 有哪些关键要素? 众所周知,云带来的好 ...

  5. linux开发 stc_Linux环境下搭建STC单片机平台的指南

    Linux 环境下的头文件定义 编译文件以及转换bin文件等 操作系统:Ubuntu16.04 单片机:STC89C52RC 所需工具: 1.编辑器 - vim 2.编译器 - sdcc 3.转换程序 ...

  6. python嵌套html开发gui_python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例...

    PyQt5布局控件QFormLayout简介 QFormLayout是label-field式的表单布局,顾明思议,就是实现表单方式的布局,表单是提示用户进行交互的一种模式,主要有两列组成,第一列用于 ...

  7. oracle中app文件夹下,Oracle Form开发之folder(文件夹)功能开发(一)

    一.模板制作:YSFOLDER.FMB 打开TEMPLATE.FMB,如果打开的是APPSTAND.FMB,以下步骤省略: 1.FORM级触发器: 1.在WHEN-NEW-FORM-INSTANCE后 ...

  8. Win10下VB6.0开发之VB6.0的安装

    日前在做一个工控软件的开发项目,由于软件最终的运行环境是在Windows XP的下,考虑到兼容性问题,选择了visual basis 6.0.第一次上手VB6.0的开发,遇到了很多问题,在这里开个系列 ...

  9. 软件开发详细设计说明书_汽车软件开发之ASPICE系统需求过程组

    点击蓝字 关注我们 汽车电子软件开发流程 和朋友交流时,被问到是什么行业时? 我:汽车电子软件开发. 朋友:那你认为什么开发语言是最好的呢? 我:.......Matlab.ASCET? 朋友:gun ...

  10. #开发catia_CATIA工程制图二次开发之15:从平面创建剖面视图

    从平面创建剖面视图 如何创建与平面关联的切割剖面视图 摘要 本文讨论 CAADrwCreateSectionFromPlane用例.此用例说明如何创建由与平面关联的切割剖面定义的生成剖面视图.因此,如 ...

最新文章

  1. Nature解析中国AI现状,2030年能引领全球吗?
  2. 阅读器关闭时Read的尝试无效
  3. wmi接口如何通过Win32_Volume类修改盘符
  4. spring security xml配置详解
  5. 单例设计模式之安全的懒汉式
  6. iis php mysql 集成_如何在IIS上集成php(iis+mysql+php+zend)
  7. 深度学习的研究方向: 你会为AI转型么?
  8. python内置函数print输出到文件,实现日志记录的功能
  9. html 播放wav,js播放wav文件(源码)
  10. 出现报错Maximum call stack size exceeded
  11. c语言电话订餐管理系统
  12. Spring 中常用注解原理剖析
  13. %date~0,4%和 %time~0,2%等用法详解
  14. OpenWrt 安装中文语言包
  15. 4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问
  16. 解决XWPFRun的addPicture方法无法显示图片的问题
  17. 这么简单,抄抄,改改就行啦
  18. 移动互联网时代 移动生活的碎片化解决方案
  19. Android-记账本(一)-效果图
  20. 网络安全风险感知和发掘习题及答案

热门文章

  1. Python-matplotlib定制化刻度(主副)绘制
  2. 用Brup Suite爆破网站管理员用户名密码
  3. Java 离线人脸识别SDK 支持arcface 2.0 最新版
  4. php能转换音频采样率吗,音频采样率转换 如何转换音频采样率
  5. MATLAB算法实战应用案例精讲-【图像处理】相机标定
  6. Linux 的学习记录(一) (基于前置机更新)
  7. 基于ARM-Linux的点菜系统
  8. 从零玩转系列之微信支付实战PC端支付微信回调接口搭建
  9. The review of your app is taking longer than expected
  10. 用python编写俄罗斯方块游戏