ARCIMS 介绍

 1. Web Server
WEB服务器是运行在一台机器上以确保一个站点能够在网络上被访问的程序,如IIS或TOMCAT等。当一个浏览器发出一个文件或数据请求时,WEB服务器会给这个文件或数据定位,并把它们返回到客户端程序。ArcIMS并不包括一个WEB服务器,但是IMS运行的时候,需要WEB服务器也运行。
IMS的程序是使用JAVA编制的,这使得我们在运行IMS的时候需要使用JRE,即JAVA运行环境,IMS在安装的时候会给我们安装一个JRE。
ArcIMS也要求一个Servlet引擎,一个Servlet engine会通过一个Servlet API给一个Servlet提供支持。许多WEB服务器并不直接提供Servlets支持,所以,如果你的WEB服务器(如IIS)不提供的话,你需要安装一个Servlet引擎。而我们安装的ServletExc或Tomcat都是一种Servlet引擎。

2. ArcIMS的Connectors
连接器提供了一个WEB服务器或第三方应用服务器与IMS的应用服务器之间的通讯管道。ArcIMS Servlet Connector会作为一个默认组件被安装。
ArcIMS有五个连接器:
l ArcIMS Servlet Connector 默认连接器,支持所有平台。它使用一个Servlet 引擎提供通讯连接
l ActiveX Connector 这个连接器是使用COM标准的DLL组件编写,它可以被一个COM程序,如ASP来使用,它仅仅在Windows平台才可用。
l ColdFusion Connector 这个连接器允许你自定义ColdFusion标签。它处理来自ColdFusion服务器的请求,并把它发送到IMS应用服务器,它可以使用在所有平台上。
l JAVA Connector 这个连接器是一组JAVABeans,它可以和JSP连接。用于所有平台
l .NET Link 这个连接器是一个.NET程序集,它提供了一个中立的.NET库给IMS的应用服务器。我们可以使用两种类型的通讯,TCP/IP或HTTP/HTTPS。这个组件在Windows平台上可用。

3. 管理工具
IMS有两种管理工具,一是使用浏览器上的JAVA APPLET,另一种就是使用本机或局域网内的JAVA程序,但是无论哪一种,都主要分为Author、Administrator和Designer三部分。
Author用于创建,修改包含数据源、数据可视化配置信息的ARCXML文件,它是IMS完成具体功能的基础,没有这个文件,就无法定义MapService。IMS支持多种数据格式,矢量有SHP和SDE数据源,栅格格式数据TIFF等。大部分格式都需要手动修改配置文件。
Administrator用于管理IMS的Server、VirtualServer和MapService,以及管理IMS站点的配置信息,监视客户端等。
Designer用于完成一个GIS站点设计。

4. 浏览器Viewers和客户端Client
使用IMS的Designer来设计一个站点的时候,我们可以选择三种类型的浏览器——HTML、标准JAVA或 JAVA定制。我们可以定制浏览器或产生一个新的客户端。我们还可以选用ArcExplorer程序作为客户端软件。事实上,Desktop版本的 ArcGIS这些胖客户端可以访问IMS的数据。
JAVA版本的浏览器可以提供数据编辑功能,如果需要使用远程编辑,可以使用这种客户端。
如果你打算开发一个自己的客户端,可以使用IMS提供的某种特定的API,它取决于你的开发环境。每一种浏览器或客户端都有它自己的优势,关于选择何种客户端和浏览器,可以看IMS的帮助。

5. 配置文件和ArcXML
配置文件是发送给一个IMS服务的,它包含了我们想得到信息的基本描述,如数据位置、图层符号化、地理编码属性和预存的查询。一般,一个IMS的配置文件有以下特点:
l 在Author中产生
l 包含数据和定义的地图内容
l 有ArcXML写成
l 后缀为axl
尽管如此,配置文件也可能是一个MXD文件或一个PMF文件。关于ArcXML的例子,可以阅读《ArcXML Programmer's Reference Guide》。

6. IMS的安装文件夹
在ArcIMS的安装前,我们需要安装好WEB服务器,如果需要的话,还需要安装一个Servlet引擎,关于安装这些组件,我们可以在http://support.esri.com 点击KnowledgeBase的25867号文章,查看相应的安装环境。
这篇名为《Pre-Install articles for ArcIMS》的文章介绍的不同配置组合多的吓人,这些组合包括:WEB服务器+Servlet引擎+系统平台。我们一般选用的是IIS4/5+ ServletExec5.0+J2sdk1.4.2、IIS4/5+Tomcat4.1.29+J2SDK1.4.2或Apache2.0.48+ ServletExec5.0+J2SDK1.4.2,方法众多,任君选择。而这个ServletExec5.0,就是为了跑JSP和Servlet的一个服务器,作用和Tomcat差不多(这是一个初学的时候让我迷糊的东西,多亏我还看过一点JSP的东西)。
以第一种方案为例(在WIN2000SP4平台):
l 安装J2SDK1.4.2版本
l 安装IIS,这是一个WEB服务器
l 安装ServletExec5.0
l 安装ArcIMS9.0
这是最简单的安装方法,因为IIS的使用比Apache等简单和容易得多。如果是安装Tomcat的话,我们还必须手动配置IIS和Tomcat的联系。
下面我们查看安装目录:
l 在IMS安装目录中,Administrator/WEB-INF文件夹保存了esriadmin.properties文件,如果你需要使用服务管理,必须编辑这个文件
l AppServer保存了IMS应用服务器的文件,如日志、AppServer.properties等
l Sample保存了例子
l Server保存了空间服务器文件

上面是IMS的安装目录,作为一个WEB站点,我们也会产生一个IMS的站点目录,这个目录用于保存发布文件的某些信息:
l AXL 用于保存我们的定制文件AXL或需要发布的MXD或PMF文件
l OUTPUT 保存空间服务器产生的影像和ZIP文件
l Website 保存其它的文字文件

也许大家会遇到ArcIMS无法启动的情况,即在我们启动Administrator的时候,显示http://无效或者IMS没有启动。打开“服务”,检查以下Service是否启动:
l ArcIMS Application Server
l ArcIMS Monitor
l ArcIMS Tasker
l ServletExec-(这个服务需要注意)

如果是第一次启动ArcIMS,第一步是启动Author添加地图内容,并把它保存为一个axl文件;然后,启动Administrator或Service Administrator(基于WEB的服务管理器,其启动网址为http:///esriadmin)来产生和启动一个ArcIMS服务,最后一步就是启动Designer来设计一个WEB站点。
如果你想通过IMS来传播mxd或pmf文件,你可以在Author中使用mxd和pmf而不是产生axl。第一步是产生一个mxd或pmf文件,然后产生一个ArcIMS Image Service,最后在Designer中设计站点。查看站点可以使用以下网址:http:///website/

7. 流程  1.当使用ArcIMS Designer创建一个Web Site后,就会自动生成此网站的HTML Viewer,ArcIMS Designer生成网站的地点就在Posr Installation定义的 Website directory
问题是可不可以把 JSP应用服务器 和 ArcIMS Server 分别放在两台服务器上?
2.选择HTML Viewer的理由是,用户不需要自己给地图添加数据,而且只使用并只使用一个Image Service。
3.HTML Viewer文件组织:
ArcIMSparam.js包含了一系列JavaScript变量定义网站的外观和行为,大量定制在这里进行;
HTML网页
流程:
Default.htm - 为网站入口(检查browser版本,IE、NetScape 4.0以上)如不支持的浏览器,转入
CannotRun.htm,如支持转入
Run.htm - 定义了两个Frame:
MapFrame (Authorize.htm)
PostFrame (jsForm.htm) //本 Frame 的Size为零,隐含
定义两个Frame的同时,onload检查权限、发送请求 Request AXL
Authorize.htm中的Response AXL的处理函数
在此定义的主要是授权用!
processAuthorization()对于response如果没有错的话,就不管了,直接进入viewer.htm
viewer.htm - 定义了程序主框架              
jsForm.htm - 定义了Form name="theForm" ,以type="post",发送用于请求的Request AXL
INPUT NAME="ArcXMLRequest" 放置Request AXL
**> jsForm.htm 文件包含有一个函数passXML(),在提交请求时为空,在Servlet响应返回后,由Servlet生成返回页插入PostFrame 文件包含的一个函数passXML()其有变量 var XMLResponse包含服务器响应的Response AXL;同时函数还调用MapFrame的processXML()处理 Response AXL。
function passXML() {
  var XMLResponse='<?xml version="1.0"。。。。</ARCXML>';
  parent.MapFrame.processXML(XMLResponse);
}

4. Servlet Connector的入口Servlet:
com.esri.esrimap.Esrimap 参数
ServiceName  ArcIMS 服务名
ClientVersion  ArcIMS 版本号
Form    true请求来自HTML的Form
Encode  
* 请求重定向 CustomService 参数
原因:
影像虚拟服务(Image MapService) 不提供"属性信息","几何信息","地理编码"等的功能,所以请求被重定向到其它的虚拟服务。
即:
When sending a request other than GET_IMAGE to an image MapService,redirection is required;
Redirection is achieved in action attribute of the PostForm:
GET_FEATURES
CustomService = Query
GET_GEOCODE
CustomService = Geocode
GET_EXTRACT
CustomService = Extract
Http://caesar1:8888/servlet/com.esri.esrimap.Esrimap?ServiceName=Beijing&CustomService=Query&ClientVersion=3.1&Form=true
5.PostForm
ArcXMLRequest(required) ArcXML request being sent to the server
JavaScriptFunction(optional) 指定 jsForm.htm 中的处理response 函数名,默认为passXML()
RedireURL(optional)
BgColor(optional)
FormCharset(optional)
6.请求与响应的过程:
1>Request --> Servlet Connector -->Application Server
Servlet Connector对传来的Request进行解析,只传给Application Server :
  * ServiceName
  * ArcXMLRequest
其余参数由Servlet Connector保留对响应(Response)的格式设置
2>对Servlet Connector的调用为:
  http://hostName/servlet/com.esri.esrimap.Esrimap
3>响应:Application Server将参数传递给 Spatial Server,Spatial Server将响应
(Response)返回给 Application Server,所有的 Response只有两种:
* ArcXML  包含属性信息、图片的URL(HTML Viewer只能处理这一种)
* Feature Stream 二进制压缩要素流

4>the Servlet Connector Creates a new HTML page based on
* Value of the input elements specified in the request
* Default values of the input elements
* The Response ArcXML

请求
一、最基本函数:
sendToServer --> htmlSendToServer
提交表单 PostForm
(aimsXML.js)
参数:
  URLString
  XMLRequest Request ArcXML
  theType  XMLMode的值,默认为1,GET_IMAGE
sendToServer将 theType 赋给XMLMode,然后调用htmlSendToServer提交表单。
二、GET_SERVICE_INFO
由 getStartExtent()构造,并调用sendToServer(imsURL,theString,3);(aimsCommon.js)
具体调用关系为:
viewer.htm在所有Frame装完后,onload一个doIt()--> checkParams --> startMap -->startUp -->getStartExtent
(startMap、startUp、getStartExtent都在aimsCommon.js)
三、GET_IMAGE
首次的 GET_IMAGE 是在对GET_SERVICE_INFO的响应中调用的(case 3);
sendMapXML()
writeXML()构造得到 Map 图的 ArcXML
响应
一、处理响应最基本函数:
aimsXML.js中的:
    processXML(XMLResponse)根据 XMLMode 处理相关 Response
function processXML(theReplyIn) {
  ...
  switch(XMLMode) {
   case 1: //得到地图GET_IMAGE
   ...
   default: //XMLMode >= 1000交给用户定制处理
    if (XMLMode >= 1000) {
     useCustomFunction(theReply);
    } else {
     alert(theReply + msgList[19]);
    }
}
二、
case 3: GET_SERVICE_INFO
保存查到的地图最大值,调用 ProcessStartExtent(theReply) (aimsCommon.js)
-->sendMapXML(){
   writeXML();
   sendToServer(,,1);
  }
三、用户定制:
processXML 中当 XMLMode大于1000时,为用户定制处理:
  default://XMLMode >= 1000交给用户定制处理
   // send any responses to custom requests off to the custom handler
   // XMLMode >= 1000 are reserved for custom requests/responses
   if (XMLMode >= 1000) {
    useCustomFunction(theReply);
useCustomFunction(theReply)在aimsCustom.js中

接收的Servlet为com.esri.esrimap.Esrimap
posted @ 2008-12-04 18:23  googlegis  阅读(260)  评论(0编辑  收藏  举报

坐标合肥,非典型GIS开发人员 GitHub