首页 历史故事 基于的网络概念及其特征

基于的网络概念及其特征

时间:2022-01-19 历史故事 版权反馈
【摘要】:通过动态下载客户端的执行代码,基于Javabean的网络地理信息系统客户端与基于ActiveX的相比,程序代码更少,内核更小。基于J2EE的分布式地理信息服务不依赖任何特定操作系统、中间件和硬件平台,只要设计合理,开发一次就可部署到各种平台。图4-7 基于J2EE的分布式地理信息服务体系结构图Web服务器——负责WWW功能。
基于的网络概念及其特征_网络地理信息系统

4.3.1 基于J2EE的网络GIS概念及其特征

基于J2EE的分布式地理信息服务(陈能成等,2003)是采用J2EE的体系框架来构造基于Web的多层体系结构的地理信息服务。它使用标准的J2EE容器(Web容器和EJB容器)完成对GIS组件的注册、查找、唤醒、调用和销毁。浏览器和Web服务器之间通过HTTP(HTTPS)协议进行通信,Web服务器和GIS应用服务器通过RMI进行通信,GIS应用服务器之间通过IP多目广播协议进行通信。GIS组件通过空间数据连接器与数据服务器进行通信,完成数据库的存取,通过消息服务基础设施完成与原有系统的集成。GIS组件之间耦合在一起,形成功能不等的地理信息服务,这些地理信息服务通过标准的HTTP协议进行通信,通过对空间数据编码进行传送。它具有如下的特征:

①轻量型的客户端。通过动态下载客户端的执行代码,基于Javabean的网络地理信息系统客户端与基于ActiveX的相比,程序代码更少,内核更小。

②跨平台的组件。使用Java语言开发的基于JavaBean技术的GIS客户端组件和基于EJB技术的服务器端组件不仅可以在微软的操作系统中运行,而且也可以在Unix、Linux的操作系统中运行,可以做到一次编写,跨平台运行。

③可扩展性。由于JavaBean遵循组件模型,因此可以与其他的软件组件交互,大大减少了用户的开发费用,缩短了开发周期。与此同时,大多数数据库厂商支持标准的JDBC连接协议,有利于数据库驱动程序的迁移与更新。

④弹性配置。利用J2EE开发的分布式GIS组件,既可以配置成传统的C/ S结构的两层应用,也可以配置成基于Web的B/S结构的两层结构,甚至可以配置成三层或者多层的应用。

⑤广泛的组件类型支持。包含GIS会话组件和GIS数据组件。GIS会话组件完成GIS业务处理逻辑,GIS数据组件可以代表存储、处理和传送的数据实体。

⑥大量的厂商支持。由于J2EE有例如IBM、SUN、ORACLE、BEA等大量厂商的支持,因此用户选择的范围更加广泛。

⑦异构环境的支持。J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的分布式地理信息服务不依赖任何特定操作系统、中间件和硬件平台,只要设计合理,开发一次就可部署到各种平台。

⑧应用安全性。提供了多种应用安全策略,包括最终用户身份认证、节点连接的安全认证、应用程序的安全认证、管理界面的访问权限控制、数据加密/解密功能和安全事件报警等。

可靠性。提供一个坚固的系统运行环境,具有强大的故障恢复能力、系统重新启动和恢复能力、数据可靠的传输能力。

如图4-7所示,基于J2EE的分布式地理信息服务体系主要由客户端、Web服务器、GIS应用服务器、空间数据服务器、服务连接层和基础设施服务6个部分组成。

客户端——又可以分为浏览器客户端、专用客户端、信息设备客户端和没有用户界面的地理信息服务,负责完成GIS数据的表达逻辑。客户端可以是基于浏览器的HTML Viewer、Java1.1 Applet Viewer、Java 2 Applet Viewer,也可以是基于JDK1.2的应用程序,还可以是WAP浏览器和服务程序。其中HTML Viewer只支持栅格数据(JPEG、GIF)和影像数据流;Java1.1 Applet Viewer支持栅格数据(JPEG、GIF)、影像数据流和矢量数据流;Java1.2 Applet Viewer和基于JDK1.2的应用程序支持栅格数据(JPEG、GIF)、影像数据流、矢量数据流、DEM数据和三维数据。并且所有的表现均是基于JavaBean组件的方式提供,用户可以根据需要定制自己的客户端。

img31

图4-7 基于J2EE的分布式地理信息服务体系结构图

Web服务器——负责WWW功能。Web服务器可以有多种选择。如果采用HTML Viewer或ASP+Java Applet Viewer的方式,那么可以采用微软公司的Internet Information Services(IIS)服务器;如果采用JSP+Java Applet Viewer+ Servlet的方式,那么就必须使用有Servlet或JSP功能的服务器,例如IBM Websphere、SUN iPlanet服务器、Apache服务器和IIS+Tomcat等Web服务器。

GIS应用服务器——一种基于JAVA2企业级版本的应用,部署在一个提供企业级应用服务所必需的基础服务(例如事务、安全和持久性服务)的容器中,作为服务运行于后台,由GIS Servlet引擎、会话组件和实体组件组成,完成GIS业务逻辑,包括投影变换、空间数据存储、空间查询和空间分析等服务。

由于EJB容器提供了分布式计算环境中组件需要的所有服务,实现商业逻辑的GIS EJB组件可以更加高效地运行在GIS应用服务器中,用户可以通过Java Servlet或者JSP调用运行在EJB Server中的EJB,以实现商业逻辑,也可以通过IIOP直接访问运行在EJB Server中的组件。可以通过JDBC或SQLJ连接到数据库,也可以通过Java连接体系结构(JCA)来访问已经存在的遗留系统。它也可以通过XML的Java函数接口(JAXP)使用WEB服务技术(例如SOAP、UDDI、WSDL和ebXML),与业务伙伴进行通信。

EJB容器是用于管理EJB对象的设备。它负责对象的生命周期的管理,实现EJB对象的安全性,协调分布式事务处理,并负责EJB对象的上下文切换。EJB容器还可以管理EJB对象的状态。在某些情况下,EJB对象数据是短暂的(如会话EJB对象),只存在于特定的方法调用过程中。另一些情况下,EJB对象数据是长久的(如实体EJB对象),多个访问都要调用此EJB对象数据。EJB容器必须同时支持短暂对象数据及长久对象数据。EJB对象被赋予EJB容器,当EJB对象被使用时,用户可以通过修改其环境属性来定制EJB对象的运行状态特性。比如,开发者可以使用EJB容器用户接口提供的工具,来修改EJB对象的事务模式及安全属性。EJB对象一经使用,EJB容器就负责管理EJB对象生命周期、EJB对象安全特性和协调事务处理。

空间数据服务器——存储空间数据,可以采用文件形式,也可以采用数据库形式对影像、矢量、DEM和属性数据进行管理。

基础设施服务——在上述体系框架中,WEB服务器和GIS应用服务器都包含了空间数据连接、事务处理组件、命名接口、消息服务和组件通信服务基础设施。其中空间数据连接是基于JDBC的空间数据连接器,负责与空间数据部件打交道,创建、管理和销毁连接;事务处理组件负责服务器端GIS EJB组件的事务的开始、回滚和结束等服务,可以分为容器管理和组件自身管理的事务;命名接口负责定义服务资源的唯一标志,这种服务资源包含系统配置、数据库所在位置、连接池名称、组件名称和服务名称等。

服务连接层——业务伙伴能够通过Web服务技术与J2EE应用程序进行连接。Servlet又称为面向请求/响应的Java对象,能够从业务伙伴中接收到Web服务的请求。Servlet使用服务连接层中的函数来执行Web服务的操作。

1.服务器端组件

服务器端组件又称为中间件,本节首先介绍J2EE已有的基础设施,围绕用户开发的服务器端组件如何加入到基础设施和如何与空间数据连接两个问题进行讨论。

符合J2EE3.0标准的应用服务一般含有命名服务、事务管理、安全管理、消息中间件这些基础设施。通常而言,自己开发的中间件通过部署工具加入到符合J2EE标准的应用服务器。例如,iPlanet提供了部署工具把EJB组件打包成*.jar文件和把Servlet打包成*.war文件,在此基础上把这两个文件加入到*.ear文件进行发布,发布的中间件作为服务驻留在服务器端,可以直接使用应用服务器提供的基础设施。除此之外,可以自己实现J2EE标准的应用服务器来支持自己开发的中间件。

对于服务器端组件,可以通过JDBC连接到数据库。例如Oracle提供了3种类型的JDBC驱动程序:Thin(100%纯Java驱动程序)、Fat(基于OCI的驱动程序)和基于服务器端内部的驱动程序。所有采用JDBC访问数据库的过程均可以归结为以下的几个步骤:注册和登记驱动程序、连接数据库、执行查询得到结果集、分析结果集的内容和关闭连接。

在本书中所采用的空间数据包含数据库和文件两种存储方式。对于数据库存储,则直接采用数据库厂商提供的驱动程序连接到空间数据;对于文件方式的存储,直接编写读取数据到能够解析的内存格式的空间数据读取组件,例如对于ShapeFile文件格式,直接写解析这种格式的Java接口。图4-8所示为矢量服务中访问空间数据的方法。其中矢量会话组件负责接受GIS引擎的请求,把请求分类定位到空间数据组件JNDI集合接口中的某一特定的JNDI,根据中间件提供的命名服务找到相应的空间数据访问组件,空间数据访问组件通过JDBC驱动程序、ODBC-JDBC桥和扩展的JDBC驱动程序中的一种访问空间数据。其中JDBC驱动程序由数据库厂商提供,ODBC-JDBC桥由中间件厂商提供(例如Symantec的DBAnywhere),扩展的JDBC驱动程序由自己编写,主要访问以文件格式存储的空间数据。

2.GIS EJB组件

GIS EJB组件包含会话组件和实体组件。

①GIS会话组件。GIS会话组件实例作为单个的GIS客户执行的对象,作为GIS实体组件对象的客户端,完成GIS实体组件对象的解析和生成服务,执行空间数据查询逻辑,根据GIS客户的请求生成特定的地图信息集合等服务。如图4-9所示,一个GIS会话组件可以访问多个不同类型的GIS实体组件,完成一次会话逻辑。

②GIS实体组件。对空间数据库中的数据提供了一种对象的视图。如图4-10所示,一个GIS实体组件实例能够模拟数据库表中一行相关的数据(例如SDOGeometry),通过数据库连接器(例如JDBC或SQLJ)连接数据库,并且有相应的方法来添加、修改和删除数据库中的记录,完成空间信息存储、空间坐标转换、地理数据提取、地理坐标配准等地理信息服务。多个客户能够共享、同时访问同一个GIS实体组件,通过事务的上下文来访问或更新下层的数据。这样,数据的完整性就能够被保证。

img32

图4-8 矢量数据服务中服务器端组件访问数据库设计示意图

img33

图4-9 服务器端GIS会话组件功能视图

在实际的设计中,我们采用3组不同类型的会话组件和若干组实体组件。图4-11所示的会话组件包含DEM会话组件、矢量会话组件和影像会话组件。

DEM会话组件、矢量会话组件和影像会话组件均设计成无状态会话组件,包含本地接口、远程接口和会话组件实现类。在一种方法调用中,无状态会话组件可以维持调用客户的状态,当方法执行完,状态不会被保持;在调用完成后,无状态会话组件被立即释放到缓冲池中,所以具有很好的伸缩性,可以支持大量用户的调用。本地接口继承javax.ejb.EJBHome,由EJB生成工具生成,EJB容器通过EJB的本地接口来创建EJB实例;远程接口继承javax.ejb.EJBObject,定义会话组件中要被外界调用的方法,由EJB生成工具生成;在EJB类中,编程者必须给出在远程接口中定义的远程方法的具体实现。EJB类中还包括一些EJB规范中定义的必须实现的方法,这些方法都有比较统一的实现模板,编程者只需花费精力在具体业务方法的实现上。图4-12所示为矢量会话组件,包含组件实现类gisbean.provider.SdoObjectBean、远程接口gisbean.provider.SdoObject和本地接口gisbean.provider.SdoObjectHome。其中远程接口定义了包含获取数据和查询的10种方法,相应的SdoObjectBean实现了这些方法。

img34

图4-10 服务器端GIS实体组件功能视图

img35

图4-11 服务器端GIS组件构成示意图

3.GIS引擎

Java Servlets是服务器端的Java程序,Web服务器通过运行Java servlets程序采用与CGI类似的方法来生成动态内容响应客户机的请求。Servlet可以认为是一个没有用户界面的运行在服务器端的Applet程序。这些Servlet程序能够通过URL请求的方式被调用。Servlet处理应用程序的表现逻辑,与此同时提供页面到页面的导航连接,它们同时提供会话管理和简单输入验证,并且能够和业务逻辑进行绑定。

img36

图4-12 矢量会话组件实现示意图

GIS引擎服务作为服务器的插件运行在Web服务器上,负责转发GIS客户端的HTTP协议层上的请求和GIS应用服务器上的响应,完成Web服务器与GIS应用服务器的交互。对于终端用户来说,它是客户机的服务器;对于GIS应用服务器来说,它是应用服务器的客户。图4-13概括了GIS引擎服务与GIS浏览器客户机之间的连接通信。

GIS引擎服务可以通过一系列协议连接到Web服务器,或直接通过HTTP连接到GIS浏览器。一个GIS servlet通过使用不同的协议,例如远程方法调用(RMI)、超文本传输协议(HTTP)、NetScape服务器端API函数(NSAPI)和Internet Explorer服务端API函数(ISAPI)连接到多个Web服务器上。连接方法定义了如何请求从外部世界进入服务器。每种连接方法维护通道的一个有序列表,通道作为GIS Servlet到连接目的地的一个逻辑接口,都有一个标识并指向通道ID,每个通道可以是可用的或不可用的。当不可用时,连接被拒绝,不能传递到任何GIS servlet;当可用时,连接可以到达目的地GIS servlet。

img37

图4-13 GIS Servlet引擎服务与GIS浏览器客户机之间的连接通信示意图

GIS Servlet引擎服务作为GIS EJB组件的客户端,负责调用和获取地理数据、地理分析处理结果和查询结果集。它通过调用GIS EJB组件对象中的方法来完成与GIS应用服务器中的组件之间的交互,因此GIS EJB组件本地对象必须包含组件所带的每一种业务逻辑方法。在生成GIS组件时,会相应地产生一个远程接口,对GIS组件添加公有方法时会同步地在远程接口中复制这些公有方法。GIS EJB组件的远程接口遵循特定的规则。图4-14代表了GIS Servlet引擎与GIS应用服务器中GIS EJB组件之间的会话过程:

①GIS Servlet通过Java命名目录访问接口JNDI查找到GIS组件对象的本地接口。

②通过找到的GIS组件对象的本地接口创建远程对象。

③返回GIS远程对象的引用给GIS Servlet。

④GIS Servlet通过RMI调用GIS远程对象中的方法。

⑤在GIS Servlet调用远程接口的方法时,容器负责映射远程对象的方法到具体的服务器端GIS组件中的方法。

⑥返回服务器端GIS组件中的方法。

⑦通过方法返回处理值。

img38

图4-14 GIS Servlet引擎与GIS应用服务器中GIS EJB组件之间的会话过程示意图

4.地理信息服务

上述的GIS引擎和GIS EJB组件可以部署在一台或多台服务器上,形成功能不等的地理信息服务。在Web组件服务的调用过程中有以下两种常见的调用模式:基于RPC的分布式地理信息服务模式和消息的分布式地理信息服务模式。

一个基于RPC方式的分布式地理信息服务模式通过使用一个无状态的会话组件来实现,是一种基于同步的服务调用机制。对于客户应用程序来说,它可以被看做是一个远程的对象。如图4-15所示,服务使用者和服务提供者之间的交互通过特定于服务的接口来实现,具体过程如下:

①地理信息服务消费者把消息通过HTTP/HTTPS协议提交给J2EE服务器,通过这个消息调用一个基于RPC的地理信息服务。

②GIS Servlet引擎处理RPC的地理信息请求,使用请求信息来唯一定位相应的无状态的GIS会话组件。GIS Servlet引擎解析地理信息服务请求,绑定请求到特定的Java对象。通过这个对象,调用定位的无状态的GIS会话组件。通常情况下,这个组件执行Web服务的所有工作,也可以把任务分解给其他组件。

③被调用的GIS组件发送返回值,也有可能把结果值直接返回给基于RPC的Servlet引擎服务。

④RPC GIS Servlet引擎把返回值重新封装成一个响应,并且通过HTTP/ HTTPS的post操作把这个响应发送给服务消费者。

img39

图4-15 基于RPC方式的分布式地理信息服务调用过程示意图

基于消息的分布式地理信息服务模式支持单向通信,是一种异步的服务模式。客户机应用程序要么发送一个文档给分布式地理信息服务,要么从分布式地理信息服务中获得一个文档。基于消息的一个分布式地理信息服务只能完成发送或接收的一种功能,因此在设计基于消息的分布式地理信息服务时,必须至少有两个分布式地理信息服务:一个用于接收客户应用程序的请求文档,另一个用于把请求处理的结果包装成文档发送给客户。如图4-16所示,它包含了GIS消息接收Servlet引擎、GIS消息发送Servlet引擎、地理消息服务和基于消息驱动的GIS组件。具体调用流程如下:

①地理信息服务消费者通过HTTP/HTTPS协议把地理信息消息请求提交给基于J2EE的服务器。

②GIS消息接受Servlet引擎为基于J2EE服务器的Web应用程序的一部分,通过地理信息服务消费者调用服务,启动后能够把结果对象放置在相应的地理消息服务器中。

③消息驻留在地理消息服务器中进行排队等候,直到相应的基于消息的GIS组件获取这个消息。

④消息驱动的GIS组件从地理消息服务中获取消息。这个GIS组件可以完成分布式地理信息服务的所有关键业务逻辑,也可以把任务进一步分解给其他的GIS组件。

⑤消息驱动的GIS组件把处理后的结果文档,发送给另外一个配置成Web应用的、允许地理信息服务消费者接收消息的、与另外的基于消息的Web服务相关联的服务。

⑥与GIS消息发送与Servlet引擎相关联的第二个分布式地理信息服务,从地理消息服务中获得消息。

⑦当分布式地理信息服务消费者调用第二个分布式地理信息服务时,这个服务把文档发送给客户。

img40

图4-16 基于消息驱动的分布式地理信息服务调用过程示意图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈