已阅读5页,还剩62页未读, 继续免费阅读
(计算机软件与理论专业论文)基于j2ee的车载信息服务系统的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东北大学硕士学位论文 摘要 基于j 2 e e 的车载信息服务系统的研究与实现 摘要 随着通信技术的不断发展,特别是网络技术的不断成熟与完善,利用网络技术实现 对通信设备的服务渐渐成为一种可能。当前我国综合国力不断增强,居民在汽车电子领 域的消费不断增加,提供高质量的车载信息服务也应运而生,加之j a v a 语言的兴起j 2 e e 技术的出现,使跨平台,分布式应用得以广泛实施,本论文的目的在于把解决当前企业 应用的j 2 e e 架构和相关的技术,应用于车载信息服务系统中,从而为车载信息服务提 供一个参考实现。 在国内,车载信息服务领域虽然有了一定的发展,但仍面临多种技术问题,包括: 没有良好的架构参考、没有良好的模式结构参考、系统处理效率不高、以及系统可移植 性等诸多问题。 本文作者有幸参与了国外一个车载信息服务系统开发工作的全部过程,对_ i 眈系统有 了充分的了解,借鉴国外先进的设计经验,并结合国内车载信息服务发展的具体情况, 对此系统进行了全面的总结,提出了该系统的架构流程,分析了该系统中使用的j 2 e e 设计模式等,并对该系统的一个核心模块进行了详细的剖析。最后,总结了所做的工作, 指出了系统中存在的不足,并给出了一些建议。 关键词:车载机;j 2 e e 架构;设计模式;e j b 技术;o rm a p p i n g 东北大学硕士学位论文 r e s e a r c ha n di m p l e m e n t a t i o no fc a r n a v i g a t i o ns e r v i c es y s t e m b a s e do nj 2 e e a b s t r a c t w i t ht h ed e v e l o p m e n to fc o m m u n i c a t i o nt e c h n o l o g y , e s p e c i a l l yt h em a t u r i n go fn e t w o r k t e c h n o l o g y , i ti sp o s s i b l e t ou s et h en e t w o r kt e c h n o l o g yt os e r v et h ec o m m u n i c a t i o n e q u i p m e n t t o d a yw i t ht h e i n c r e a s eo fo u rc o m p r e h e n s i v en a t i o n a l s t r e n g t h ,p e o p l e s e x p e n d i t u r e0 1 1c a r e l e c t r o n i cd o m a i n si so nt h er i s e a n di t sh i g ht i m et oi m p r o v et h e q u a l i t yo fc a rn a v i g a t i o ns e r v i c e t h ee m e r g e n c eo fj a v al a n g u a g ea n dj 2 e et e c h n o l o g y , a l l c o m b i n e st om a k ew i d ed e p l o y m e n to ft h ed i s t r i b u t e da p p l i c a t i o np o s s i b l e t h eg o a lo ft h i s p a p e ri st oa p p l yt h ej 2 e ea r c h i t e c t u r ea n dr e l a t e dt e c h n o l o g yt o 舀v ear e f e r e n c e i m p l e m e n t a t i o nt ot h e c a r n a v i g a t i o ns e r v i c es y s t e m w i t ht h ep a rn a v i g a t i o ns e r v i c e ss t i l la ti t se a r l yd e v e l o p m e n ts t a g e ,w ef a c em a n y p r o b l e m s ,s u c ha sn og o o da r c h i t e c t u r ef o rr e f e r e n c e ,n og o o dp a t t e r nf o rd e s i g n ,i n e f f i c i e n c y i ns y s t e mp r o c e s s e sa n dp o r t a b i l i t ye r e i t sl u c k yf o ra u t h o ro ft h ea r t i c l et oh a v et h eo p p o r t u n i t yt op a r t i c i p a t ed e v e l o p i n ga f o r e i g nc a ln a v i g a t i o ns e r v i c es y s t e m ,t og e taf o i lp i c t u r eo ft h es y s t e m d r a w i n gf r o mt h e f o r e i g na d v a n c e de x p e r i e n c ea n dt a k i n gi n t oc o n s i d e r a t i o no fo u rd e v e l o p m e n tp h a s ei nc a r n a v i g a t i o ns e r v i c e s ,t h ea u t h o rp r o p o s e dh i si d e ao nt h es y s t e m sa r c h i t e c t u r ea n ds y s t e m s w o r kf l o w s h ea n a l y z e dt h ej 2 e ed e s i g np a t t e r n su s e di nt h es y s t e ma n dt h ek e r n e ls e c t i o no f t h es y s t e m a tl a s t ,i nc o n c l u d i n gt h ea r t i c l e ,h ep o i n t e do u tt h ed e f i c i e n c yo ft h es y s t e ma n d g a v eh i ss u g g e s t i o n k e yw o r d s :c a rn a v i g a t o r ;j 2 e ea r c h i t e c t u r e ;d e s i g np a t t e r n ;e j bt e c h n o l o g y ;o rm a p p i n g 独创性声明 本人声明所呈交的学位论文是在导师的指导下完成的。论文中取得的 研究成果除加以标注和致谢的地方外,不包含其他人己经发表或撰写过的 研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢 意。 学位论文作者签名: 丁茸8 熹、 日期: b 。;z z o 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人授权东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。 ( 如作者和导师同意网上交流,请在下方签名;否则视为不同意。) 学位论文作者签名: 签字日期: 导师签名: 签字日期: 东北大学硕士学位论文 第一章引言 第一章引言 计算机语言作为人们和计算机交流的主要方式,其每一次的变迁,源于人们对问题 解决的渴望,其结果便是生产力的极大提高。j a v a 语言作为纯粹的面向对象编程语言, 它的出现无疑是计算机编程领域的革命。而作为j a v a2 企业版一j 2 e e 平台的出现则 为企业级应用提供了强大的支撑,它的出现使得分布式异构系统可以很方便的整合在一 起。车载信息服务系统f 是在这个大背景下应运而生。 1 1 课题背景 在国外,车载信息服务已经非常成熟,很多轿车都配备各种装置用来接收服务中 心提供的各种各样的信息服务。通过这种便利的车载信息服务,驾驶人员可以获得最 新的交通信息,新闻播报等。在国内,车载信息服务有了一定的发展,随着家庭汽车消 费的不断增长,提供高质量的车载信息服务,逐渐被提到日程上来。例如:一个商务 繁忙的企业家可能想驾车去开一个紧急会议,想知道通往目的地的路况信息,看是否 有堵车情况,进而选择一条快速通行的道路;或者一个驾车旅行者来的一个陌生的地 方相知道获取最近的餐饮住宿信息:甚至于一个足球爱好者在驾驶过程中,想知道最 新足球赛事报道等,驾驶者的种种需求都可以通过车载信息服务系统提供的服务来实 现。 从原理上讲,要实现车载信息服务,就需要在汽车( 客户端) 上安装一个装置用 来定位汽车当前的位置,以及用来发射请求并接收来自服务中心的信息,这一设备通 常被称作车载机( c a rn a v i g a t o r ) ;而服务中心( 服务器端) 则对车载机进行身份验证, 并提供各种各样的服务。从狭义上讲,车载信息服务系统可以称为汽车导航服务系统, 因为它主要提供了汽车在运行中的交通信息,为汽车的行驶提供导航服务。然而此系 统还提供了除交通信息在内的其它信息,如新闻播报,目的地餐饮住宿信息等。因此 通常称此系统为车载信息服务系统。 1 2 现实意义 车载信息服务系统作为汽车电子消费领域的消费热点,它的研究与实现无论对于驾 驶员还是对汽车供应商都是福音。驾驶员可以获得的服务包括:交通信息提示,新闻播 报,所在地向导等,通过获取这些服务,驾驶员可以享受高质量的车载信息服务。而汽 东北大学硕士学位论文第一章引言 车供应商则可以通过提供这些服务来提升汽车的品位以及增强汽车的市场竞争力,甚至 可以通过此系统提供的专有服务或者说定制的服务,如目的地天气预报等来获得更多的 收益。 另外,由于车载信息服务领域在国内仍处于起步阶段,我希望本论文能对国内车载 信息服务领域的发展起到抛砖引玉的作用。不论是对国内车载信息服务系统的开发,还 是对车载机的研发,我想都会起到积极的作用。 1 3 论文结构 本文分为六章,三个部分。第一部分包括1 ,2 两章,是论文的项目背景和技术背 景。第二部分包括3 ,4 ,5 三章,是论文的着重论述的部分。对项目业务流程做了全面 的介绍,并从设计模式角度介绍了系统的结构,最后对系统的业务核心部分进行了详细 的阐述。第三部分是第6 章,这一部分是论文的结束部分,对论文的重点做了总结。 每章的主要内容描述如下: 第一章,分析了车载信息服务系统的背景和现实意义,并简述了本论文的结构。 第二章,介绍了系统的技术背景,分析了j 2 e e 平台的概念和j 2 e e 架构,并分析了 j 2 e e 平台在企业分布式计算系统中的应用。 第三章,介绍了车载信息服务系统的体系结构,以及此系统的整体业务流程,并介 绍了系统中使用的几种j 2 e e 技术。 第四章,介绍了设计模式的概念和此系统中应用的设计模式,如模版方法模式,门 面模式,工厂方法模式等。 第五章,详细介绍了车载信息服务系统的核心业务模块一一信息生成模块的实现流 程,并结合新闻信息生成进行详细的论述。最后,对信息生成模块提出了综合的评价。 第六章,对全文工作的重点作出总结,并对今后车载信息服务系统的进一步优化提 出自己的见解。 东北大学硕士学位论文第= 章j 2 e e 系统概述 第二章j 2 e e 系统概述 j 2 e e 是种技术可以开发出安全的,可仲缩的,与平台无关的解决方案以满足当今 商业丌发的需要。它通过提供一种广泛的摹础结构,使得基于w e b 的企业级应用程序变 得易于实施【1 1 。 21 j 2 e e 平台 1 2 e e 是用于建立服务器方应用程序的一种系统平台。在它出现的儿年中,它已经 取代了多种专利的和非标准的技术,成为人们建立电子商务及其它基于w e b 的企业应用 程序的首选技术。它有如下特点。 ( 1 ) 平台无关性,由于企业的信息分散在多种不同的格式中,存储在多种不同的系 统平台和应用程序上,凶此采用一种能够在企业范围中均能适用的编程语言就显得非常 重要,而不是采用低效率的编译机制。采用统一的编程模型还可以减少用于集成多种在 特定系统平台和应用程序l 的技术所带来的困难。 ( 2 ) 对象可管理性,j 2 e e 为组件提供了一种可以管理的环境,并且j 2 e e 应用程序都 是以容器为巾心( c o n t a i n e r e e n t r i e ) 的。这些特点对于建立服务器方应用程序都非常 重要。由于是可管理的,j 2 e e 组件采用了j 2 e e 服务器提供的基硎 设施,而不需要程序 员可以去牛成。j 2 e e 应用程序还是声明性的( d e c l a r a t i v e ) ,采用这种机制程序员可以 修改和控制应用程序的行为而不需要更改其代码。这些特性似乎会被认为实现起来比较 笨拙,但是当考虑到有数百个组件彼此交互而执行复杂业务处理的大型应用程序时,就 会看到这些特性简化了这些应用程序的建立和维护。除了具有独立于系统平台的特性之 外,这也是j 2 e e 最重要的a 面之一。 ( 3 ) 代码重用性,代码重用是所有编程巾最让人渴求的。把应用程序的业务要求分 解成1 i 同的组什是获得重用性的方式之一:使用面向对象技术把共享的功能封装起来也 是- - 0 0 途径。j a v a 则两种方法都采用。j a v a 是一种面向对象的语言,因此提供了进行 重用的机制。但是,与对象不同的是,分布式组件要求有一个更加复杂的基础设施来构 造和管理。但是,基本的面向对象概念并没有提供这种框架,但是j a v a 的企业版则提 供了一个进行组件重用的重要结构。用j 2 e e 开发的、务组件( 称为e n t e r p r i s e j a v a g e a n s ) 是粗线条的,并且是成熟的( r e f l e c t i v e ) 。 j a v a g e a n s ) 是粗线条的,并且是成熟的( r e f l e c t i v e ) 。 东北大学硕士学位论文第二章j 2 e e 系统概述 第二章j 2 e e 系统概述 j 2 e e 是一种技术可以开发出安全的,可伸缩的,与平台无关的解决方案以满足当今 商业开发的需要。它通过提供一种广泛的基础结构,使得基于w e b 的企业级应用程序变 得易于实施。 2 1j 2 e e 平台 j 2 e e 是用于建立服务器方应用程序的一种系统平台。在它出现的几年中,它已经 取代了多种专利的和非标准的技术,成为人们建立电子商务及其它基于w e b 的企业应用 程序的首选技术。它有如下特点。 ( 1 ) 平台无关性,由于企业的信息分散在多种不同的格式中,存储在多种不同的系 统平台和应用程序上,因此采用一种能够在企业范围中均能适用的编程语言就显得非常 重要,而不是采用低效率的编译机制。采用统一的编程模型还可以减少用于集成多种在 特定系统平台和应用程序上的技术所带来的困难。 ( 2 ) 对象可管理性,j 2 e e 为组件提供了一种可以管理的环境,并且j 2 e e 应用程序都 是以容器为中心( c o n t a i n e r c e n t r i c ) 的。这些特点对于建立服务器方应用程序都非常 重要。由于是可管理的,j 2 e e 组件采用了j 2 e e 服务器提供的基础设施,而不需要程序 员可以去生成。j 2 e e 应用程序还是声明性的( d e c l a r a t i v e ) ,采用这种机制程序员可以 修改和控制应用程序的行为而不需要更改其代码。这些特性似乎会被认为实现起来比较 笨拙,但是当考虑到有数百个组件彼此交互而执行复杂业务处理的大型应用程序时,就 会看到这些特性简化了这些应用程序的建立和维护。除了具有独立于系统平台的特性之 外,这也是j 2 e e 最重要的方面之一。 ( 3 ) 代码重用性,代码重用是所有编程中最让人渴求的。把应用程序的业务要求分 解成不同的组件是获得重用性的方式之一;使用面向对象技术把共享的功能封装起来也 是一种途径。j a v a 则两种方法都采用,j a v a 是一种面向对象的语言,因此提供了进行 重用的机制。但是,与对象不同的是,分布式组件要求有一个更加复杂的基础设施来构 造和管理。但是,基本的面向对象概念并没有提供这种框架,但是j a v a 的企业版则提 供了一个进行组件重用的重要结构。用j 2 e e 开发的业务组件( 称为e n t e r p r i s e j a v a b e a n s ) 是粗线条的,并且是成熟的( r e f l e c t i v e ) 。 东北大学硕士学位论文 第二章j 2 e e 系统概连 通过保持这些组件的粗线条性,就可以采用一种更松散的方式来建立复杂的业务功 能。其次,由于这些组件是很成熟的,因此可以标识一定的组件元数据,而应用程序可 以通过组合这些组件来创建。这些特性都使得代码能够在一个较高的灵活性和精细程度 上进行重用。 ( 4 ) 模块化,当开发一个完整的服务器方应用程序时,程序会迅速变大,变复杂。 把一个应用程序分解称几个不同的模块经常是个好办法,各模块分别负责一项特定的任 务。这就使得编成人员的应用程序更易于维护和理解。例如,j a v as e r v l e t ,j a v a s e r v e r p a g e s 和e n t e r p r i s ej a v a b e a n s 各提供一种应用程序的模块化方式,把应用程序分解成 几个不同的层次和各个不同的任务。 因此,j 2 e e 平台的思想是通过一个基于组件的应用程序模型为分布式应用程序提供 一个统一的标准。 2 2 j 2 e e 体系结构一容器 2 2 1j 2 e e 内核 j 2 e e 容器就是一个用于管理根据a p i 技术规范开发的应用程序组件以及提供对 j 2 e ea p i 访问的运行环境。j 2 e e 的容器和a p i 如图2 1 所示。 p r e s e n t a t i o n p r e s e n t a t i o nb u s i n e s sl o g i c 图2 1j 2 e e 容器和a p i f i g 2 1j 2 e ec o n t a i n e ra n da p i 在这个体系结构显示了四个容器: ( 1 ) 一个w e b 容器,用于驻留j a v as e r v l e t 和j s p 网页。 一4 - 东北大学硕士学位论文 第二章j 2 e e 系统概述 ( 2 ) 一个e j b 容器,用于驻留e n t e r p r i s ej a v a b e a n 组件。 ( 3 ) 一个a p p l e t 容器,用于驻留j a v aa p p l e t 。 ( 4 ) 一个应用程序客户容器,用于驻留标准j a v a 应用程序。 这些容器各自为对应的组件提供一个运行环境,j 2 e e 组件也为管理对象,因为这些对象 是在容器运行环境中生成和管理的。 在这个体系结构中,主要有两类客户:w e b 客户和e j b 客户。 ( 1 ) e b 客户,只运行在w e b 浏览器中。对于这些客户,用户界面是在服务器方以 h t m l 或者x m l 的形式生成的,由浏览器下载并且显示出来。这些客户使用h t t p 与w e b 容器通信。w e b 容器中的应用程序组件包括j a v as e r v l e t 和j s p 网页。这些组件实现了 w e b 客户要求的功能。w e b 容器负责从w e b 客户接收这些请求,然后在应用程序组件的 帮助下生成相应消息。其它相关的客户类型还包括具有w e b 功能,能够显示 w m l ( w i r e l e s sm a r k u pl a n g u a g e ,无线标志语言) 或者c h t m l ( c o m p a c th t m l ,紧凑h t m l ) 的移动设备。对于这种客户,内容可以是直接生成的,也可以是作为x m l 生成的,因为 x m l 可以使用x m l 式样表转换成这些标志语言。 ( 2 ) e j b 客户,指在e j b 容器中访问e j b 组件的应用程序。e j b 客户有三种可能的类 型。第一类是应用程序客户。应用程序客户是独立的应用程序,使用r m i i i o p 协议访 问e j b 组件。第二类应用程序客户是w e b 容器中的组件。也就是j a v as e r v l e t 和j s p 网页能够通过r m i l l o p 协议,以与应用程序客户相同的方式访问e j b 组件。最后一类 是另一种e j b ,运行在e j b 容器内部。这些都是通过一个本地接口和标准j a v a 方法调用 来通信的。 在上述各种情况下,客户都通过各自的容器访问应用程序组件。w e b 客户访问j s p 网页和j a v as e r v l e t 是通过w e b 容器,而e j b 客户则是通过e j b 容器访问e j b 组件。 2 2 2 容器体系结构 在看过了j 2 e e 的内核构成之后,接下来回到对体系结构的讨论,j 2 e e 容器的体系 结构如图2 2 所示: 在这个体系结构中,开发者需要提供下列内容: ( 1 ) 应用程序组件( a p p l i c a t i o nc o m p o n e n t ) 如前面所述,应用程序组件包括 s e r v l e t ,j s p 网页和e j b 等。在j 2 e e 中,应用程序组件可以封装成文档文件。 ( 2 ) 实施描述符( d e p l o y m e n td e s c r i p t o r ) ,实施描述符是一个x m l 文件,其中描述 了相关的应用程序组件。它还包含容器所需要的其它信息,以便有效地管理应用程序组 件。 东北大学硕士学位论文第二章j 2 e e 系统概述 图2 2 剩余的部分构成了容器。一个容器的体系结构可以分成四部分: ( 3 ) 协议组件( c o m p o n e n tc o n t r a c t s ) 这是容器指定的一组a p i ,要求开发者 的应用程序组件扩充或者实现。 ( 4 ) 容器服务a p i ( c o n t a i n e rs e r v i c ea p i s ) 容器提供的其它服务,一般是 容器中所有的应用程序要求有的。 ( 5 ) 声明服务( d e c l a r a t i v es e r v i c e s ) 容器对开发者的应用程序提供的服务 建立在各应用程序组件提供的实施描述符基础上,如安全性,事务等。 ( 6 ) 其它容器服务( o t h e rc o n t a i n e rs e r v i c e s ) 其它实时服务,与组件存活 期,资源集中,垃圾回收等相关。 图2 2j 2 e e 容器的体系结构 f i g 2 2a r c h i t e c t u r eo f j 2 e ec o n t a i n e r 下面详细论述上述各部分。 ( 1 ) 组件协议( c o m p o n e n tc o n t r a c t s ) 如前面所述,在j 2 e e 体系结构中容器的基本目的是为应用程序组件提供一个运行 环境。也就是说,应用程序组件的实例是在容器的j v m 内生成和调用的。这样就使得此 容器负责管理相关应用程序组件的存活期。但是,如果是在容器运行环境中管理这些组 件,那么它们就需要遵守该容器指定的特定协议( c o n t r a c t ) 。也就是说,应用程序应该 根据一个既定的运行框架来开发。 为了更好地理解这个方面,请考虑一个j a v aa p p l e t 的情况。一般情况下a p p l e t 是由浏览器下载,并且在浏览器的j v m 中开始初始化和实例化的。也就是说,此a p p l e t 存活在浏览器j v m 提供的运行环境中。 东北大学硕士学位论文第二章j 2 e e 系统概述 但是,为了让容器能够生成,初始化和调试应用程序组件,应用程序组件必须实现 或者扩充特定的j a v a 接口或者类。例如,还考虑a p p l e t 的例子,一个j a v aa p p l e t 会 要求扩充指定的j a v a a p p l e t a p p l e t 类。浏览器的j v m 也期望开发者的a p p l e t 扩充这 个类。这样就使浏览器的j v m 能够在开发者的a p p l e t 上调用i n i t 0 ,s t a r t 0 ,s t o p 0 以及d e s t o r y 0 等方法。这些方法控制着一个a p p l e t 的存活期,除非开发者的a p p l e t 扩充了j a v a a p p l e t a p p l e t 类,否则浏览器j v m 没有办法按用这些方法以控制其存活 期。 在j 2 e e 中,所有应用程序组件都是在容器的j v m 中实例化和初始化的。此外,由 于j 2 e e 应用程序组件总是与客户处于远程关系,客户无法直接调用这些组件方法,实 际上客户是向应用程序服务器发送请求,由容器来实际调用这些方法。由于容器进程是 应用程序组件的唯一入口,因此所有应用程序组件都要求遵守容器指定的协议。在j 2 e e 中,这种协议采用的是接口和类的形式,由开发者的类实现或者扩充,并且还包括组件 定义必须遵循的其它规则。 在这种组件协议中有一个重要的隐含。所有的j 2 e e 应用程序组件都是受管理的 ( m a n a g e d ) 。这种管理包括定位,实例化,集中,初始化,服务调用以及从服务中删除 组件。组件存活期的这些方面是由容器负责的,应用程序对此没有直接的控制。 下面讨论j 2 e e 指定的各种协议。在w e b 容器中,w e b 应用程序组件要求遵守j a v a s e r v l e t 和j s pa p i 。在这个模型中,所有的j a v as e r v l e t 都要求扩充 j a v a x s e r v l e t h t t p h t t p s e r v l e t 类,并且实现这个类的特定方法如d o g e t0 ,d o p o s t0 等。与此类似,在编译的时候对应j s p 网页的类扩充了j a v a x s e r v l e t j s p h t t p j s p p a g e 类。在e j b 容器中,会话和实体b e a n 程序要求具有特定的j a v a x e j b e j g h o m e 和 j a v a x e j b e j b o b j e c t 接口,并且要求实现j a v a x e j b s e s s i o n b e a n 或者 j a v a x e j b e n t i t y b e a n 接口。与此类似,消息驱动b e a n s 程序必须同时实现 j a v a x e j b m e s s a g e d r i v e n b e a n 和j a v a x j m x m e s s a g e l i s t e n e r 接口。在后面的讨论 中,组件规范和实现也需要遵循特定的规则。除了接口之外,所有这些规则构成了e j b 组件协议的一部分。 ( 2 ) 容器服务a p i ( c o n t a i n e rs e r v i c ea p i ) j 2 e e 系统平台定义了每个j 2 e e 系统平台必须支持的一组j a v a 标准扩充。j 2 e e 容 器为a p i 提供了一个服务器抽象。结果,开发人员可以在容器中访问象j d b c ,j t s ,j n d i , j m s 等服务a p i ,就像是下层容器实现了它们一样。 东北大学硕士学位论文 第二章j 2 e e 系统概述 j 2 e e 体系结构中的一个容器为j 2 e e 系统平台中指定的各个企业a p i 提供了统一的 视图。 在j 2 e e 中,应用程序组件可以通过在j n d i 服务或者实现中生成和发布的适当对象 来访问这些a p i 。例如,当编程人员想要在自己的应用程序组件中使用j m s 时,编程人 员要配置自己的j 2 e e 系统平台以生成j m s 连接工厂( c o n n e c t i o nf a c t o r i e s ) ,消息队 列和主题,并且把这些对象发布在j n d i 服务中,接着这些应用程序可以在j n d i 中查看, 获得这些对象的参考消息,并且调用相关的方法。在此过程中,j 2 e e 系统平台是否自带 有j m s 实现或者是否使用了一个第三方消息中间件解决方案都没有关系。 还来考虑j a v aa p p e t 的例子。例如,编程人员想通过一个a p p l e t 播放一个声音 文件,可以调用超类( j a v a a p p l e t a p p l e t ) 中所定义的p l a y 0 方法,通过一个o r l 指向 这个声音文件。在这种情况下,播放声音文件的功能由此超类来实现。这是代码重用的 一种方式。另一种更好的替代方式是把这个功能委派给一个通用的组件。这样的组件不 需要是相同继承关系中的一部分。所需要的只是引用实现此功能的对象。一旦应用程序 能够引用到这样一个对象,编程人员就可以向该对象委派“播放”功能。这种方式的显 著优点是,它允许来自其它多个继承关系的其它对象访问这个“播放”功能。 幽2 3 司能的服务组合 f i g 2 3p o s s i b l ec o m b i n a t i o no f s e r v i c e 在分布式应用程序中,这种情况变得更加复杂了,因为服务是远程的。打个比方, 可以考虑这个声音组件运行在一台独立的服务器上会是什么情况! 编程人员如何获得对 这个组件的引用? 解决的办法是让这个j 2 e e 系统平台生成此声音文件,并且把它的名 字发布到一个名字服务器( 如7 n d i ) ,可供开发者的应用程序使用。这样提供了种简化 东北大学硕士学位论文 第二章j 2 e e 系统概述 的访问服务a p i 的办法。这样也使编程人员能够插入这些服务的不同实现,而不需要打 断使用此服务的应用程序。这种可能组合的示意图如图2 3 所示。 注意在实现和客户之间的松散的耦合关系。只要由代理表示的接口没有改变,就可 以更改具体的实现而不会影响客户代码。这是服务器方抽象的最适合的形式,因为它不 仅使用了委托关系代替继承,还减少了耦合关系。 所有的j 2 e e 服务a p i 使用了上述方式来向应用程序提供服务。 下面是这些方式的关键隐含: a 作为一个可以位于许多现有数据库系统,事务处理系统,命名和目录服务等之上 的标准,服务a p i 消除了应用程序中组合使用这些技术而带来的固有的异构问题。 b 在j 2 e e 中,这些服务也紧密地与编程模型集成在一起。后面将会介绍如何从编 程人员的应用程序组件顺利地访问这些a p i 。 c j 2 e e 系统平台还指定了一个统一的访问这些服务的机制。 ( 3 ) 声明服务( d e c l a r a t i v es e r v i c e s ) j 2 e e 系统结构的重要特点之一是能够动态为应用程序组件提出服务。这是基于应用 程序组件之外所指定的声明。j 2 e e 体系结构提供了一种指定这些声明的简单办法,称为 实施描述符( d e p l o y m e n td e s c r i p t o r s ) 实施描述符定义了容器与组件之间的协议。作为应用程序开发着,编程人员必须为 每一组应用程序组件指定一个实施描述符。例如,一组e j b 组件可以在一个实施描述符 文件中进行统一的描述。与此类似,在w e b 容器中,每个w e b 应用程序都必须指定一个 实施描述符。根据组件的类型,特定类型的服务( 如事务,安全等) 可以在实施描述符中 指定。这种方式的目的是减少为使用这些服务而必须进行的应用程序编程。调用服务的 标准方法是通过显示调用( e x p l i c i ti n v o c a t i o n ) 。例如,为了实现数据库访问的事务, 编程人员可以系统地在访问数据库之前开始一个事务( t r a n s a c t i o n ) ,并且在相关的业 务方法完成后提交或者回滚此事务。在声明调用( d e c l a r a t i v ei n v o c a t i o n ) 中,编程人 员的应用程序组件不需要显式地开始和停止事务。根据这些信息,容器会自动在开发者 的应用程序中调用一个业务方法时启动一个事务。 简单地讲,声明事务就是由容器代表编程人员执行的一项服务或者操作。 这种方式如何工作? j 2 e e 容器自身就是分布式的,与客户处于远程关系的应用程序 组件。因此,对应用程序组件的请求和来自应用程序组件的响应都通过进程,系统平台 和网络边界完成。此外,由于应用程序组件是在容器运行环境中维护的,因此容器进程 东北大学硕士学位论文第= 章j 2 e e 系统概述 负责接收请求,并且把它们委派给适当的应用程序组件。例如,在e j b 容器中,容器接 收所有客户的请求并且把它们指定给s e r v l e t 和j s p 网页。 图2 4 显示了一个简化的此种类的调用关系。在这个示意图中,客户使用远程接口 与e j b 容器通信。 辛意容器进程处理着与应用程序组件之间的所有请求和相应消息。这 种方式允许容器先提出( i n t e r p o s e ) 一个新服务,再传送一个请求到应用程序组件。在 使用声明事务的情况下,容器可以在把进入的请求指定给业务方法隐含处理之前启动事 务,并且在方法返回的时候结束事务。这种方式有什么优点? 编程人员可以在不更改应 用程序组件的情况下提出新服务。更准确地讲,这种工具使编程人员能够把这种服务的 决定推迟到运行环境中,而不是在设计的时候确定下来。也就是说,容器可阻有选择地 根据实施描述符来增强编程人员的组件。对于e j b 容器,声明服务包括事务和安全性。 这些都可以在实施描述符中指定。在w e b 容器中,为了访问w e b 应用程序中的组件,编 程人员可以指定所需要的安全角色。 图2 4 容器处理请求的不意图 f i g 2 4s k e t c hm a p o f c o n t a i n e rd e a l i n gw i t hr e q u e s l ( 4 ) 其它容器服务 下面是容器提供的一些运行服务: a 应用程序组件的存活期管理,这里包含着生成应用程序组件的新实例,对这些实 例进行集中处理或者当不再需要时把它们删除。 b 资源缓冲池,容器可以选择实现资源缓冲池,如对象缓冲池和连接缓冲池。 c ,根据e j b 组件关联的实施名字填充j n d l 名字空间这些信息一般是在实施的时候 提供的。 d 使用容器服务a p i 必须的对象填充j n d l 名字空问一些对象包括用于数据库访问 东北大学硕士学位论文 第二章j 2 e e 系统概述 的数据库对象,用于获得与j m s 连接的队列和主题连接工长( f a c t o r y ) ,以及用于系统 是控制事务的用户事务对象。 e 集群在j 2 e e 中,容器是可以分散的。可以分散分布的容器包含许多j v m ,运行 在一个或者多个主计算机上。这种系统设置中,应用程序组件可以实施在许多j w 上。 根据负载平衡策略的类型以及组件的类型,容器可以把进入的请求负荷分散到这些j v m 上。集群技术是增强应用程序的扩展性和可用性的基本技术。 2 3j 2 e e 技术 从上述j 2 e e 体系结构的介绍中,编程人员不难看到j 2 e e 使用的技术。这些技术为 构建大型的,分布式的企业级应用提供了一种机制。根据使用的特点,可以把这些大量 的,不同的技术分为:组件技术,服务技术和通信技术。组件技术用于保持应用程序最 重要的部分一一业务逻辑。主要有三种组件技术:j s p ,s e r v l e t 和e j b 。服务技术为应 用组件提供服务,从而更高效地发挥组件的功能。通信技术对应用程序设计者来说是透 明的。它为应用的不同部分之间提供了通信机制,而不管它们是本地的还是远程的。 2 3 1 组件技术 对于任何应用来说,最重要的内容就是采用组件来对业务逻辑进行必要的建模一一 组件是应用级的可重用单元。 ( 1 ) w e b 组件对h t t p 请求做出反映的任何组件都属于w e b 组件。主要w e b 组件有 s e r v l e t 和j s p 。s e r v l e t 是服务器端应用程序,它把应用程序逻辑嵌入到h t t p 请求一一 应答过程中。s e r v l e t 提供了一种方式来扩展w e b 服务器的功能,从而使它能够用h t m l , x m l 和其它w e b 语言来产生动态的内容。j s p 是j a v a s e r v e rp a g e 的缩写,它为在页面 中嵌入组件提供了手段。由所嵌入的组件运行并产生最终发送给客户的页面。一个j s p 页面可以包含h t m l ,j a v a 代码和j a v a b e a n s 组件。j s p 实际上是对s e r v l e t 程序设计模 型的一种扩展一一当用户请求j s p 页面时,w e b 服务器把j s p 页面编译成s e r v l e t 。然 后,w e b 服务器调用s e r v l e t 并向w e b 浏览器返回执行结果。一旦从j s p 页面编译出 s e r v l e t ,w e b 服务器就会简单地返回s e r v l e t ,而不用每次都去重新编译。因此,j s p 页面提供了一种强大的产生动态页面的机制,该机制利用了j a v a 平台的许多优点。 s e r v l e t 和j s p 相比,s e r v l e t 是纯粹的j a v a 代码,在w e b 服务器把j s p 页面编译成相 应的s e r v l e t 之前,j s p 页面只是基于文本的文档一一这样,就把应用逻辑从表示逻辑 中清晰地分离出来;从而使得应用丌发者关心业务逻辑,而w e b 设计者关心表示逻辑。 东北大学硕士学位论文第二章j 2 e e 系统概述 j s p 可以使j 2 e e 应用程序的模块化程度更高。j s p 提供了一种标准的基于x m l 的接口来 定义标记,并把标记打包形成标记库。 ( 2 ) e j b 组件e j b 结构是一种分布式的组件模型,用来开发安全的,可扩展的,事 务性的,多用户的组件。简单地说,它们就是一些包含业务逻辑的可重用的软件单元。 与j s p 把应用逻辑与表示逻辑分离一样,e j b 允许把应用逻辑从系统级服务中分离出来, 从而使得开发者的精力集中在商业领域中的问题上,而不是系统级的程序设计。e j b 的 类型包括,会话e j b ,实体e j b 和消息驱动e j b 。会话e j b 用来映射业务过程流,它由 两种子类型:有状态的和无状态的。有状态的会话e j b 是用来代表客户与系统进行交互 的暂时的对象一一它执行应用中的客户请求,访问数据库等等。并且当客户操作完成后, 就把它们释放掉。而无状态的会话e j b 在客户请求时不具有状态。通常,这种类型的会 话e j b 用来实现一个具体的服务,该服务并不要求客户的状态。例如,一个简单的数据 库更新操作。实体e j b 映射数据组合和相关联的功能。实体e j b 通常基于底层数据存储 集,并基于存储集中的数据进行创建。消息驱动e j b 在概念上类似于会话e j b ,但只有 当异步消息到达时方被激活。 2 3 2 服务技术 正像前面讨论的那样,有些j 2 e e 对于应用组件的服务是由容器自己来管理的,从 而允许开发者的精力集中在业务逻辑上。但无论如何,开发者在程序中要调用这些服务 时,也会花一些时间。 ( 1 ) j d b c 虽然在将来,应当按照一种有关连接器( c o n n e c t o r ) 结构的单一标准的a p i 来对数据库进行访问,但目前,数据库连接可能仍然是开发者在应用组件中实现的关键 服务之一。j d b c ( j a v ad a t a b a s ec o n n e c t i v i t y ) a p i 是使得开发者能够连接关系数据库 系统。它允许对一个j d b c 兼容的数据库用事务对数据库进行查询,检索和操纵。 ( 2 ) j a v a 事务a p i 和服务j a v a 事务a p i 是一种用来进行事务的途径,它在本质上 是独立与事务管理实现的分布式事务。在j 2 e e 平台下,通常是由容器来为丌发者控制 分布式事务的,从而开发者不必过多关心组件中的事务一一仍然要说的是,j 2 e e 事务模 型从某种意义上说仍然是有局限的,所以有时候就需要开发者自己去实现这些工作。 ( 3 ) j n d i 在j 2 e e 平台中,j a v a 命名和目录服务接口的角色有两种:首先,它为对 目录服务资源进行的标准化操作提供了支持,这些资源有l d a p , n o v e l ld i r e c t o r y s e r v i c e 或n e t s c a p ed i r e c t o r ys e r v i c e 。其次,j 2 e e 应用程序特别用j n d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二建继续教育(建筑)试题库-多选题
- 国考行测真题及答案-19年国考试题
- 一级建造师建港口与航道工程实务考试题库(基础题)
- 2025年项目部安全培训考试题附参考答案【A卷】
- 2025年安全员B证考试试卷含完整答案详解【全优】
- 2025年卫生措施礼仪真题解析集
- 公务员网络培训考试试卷+答案
- 2025年公共管理《行政学》冲刺试卷
- 团员基础考试试题及答案
- 2025年江苏省南京市中考作文押题及范文分析
- IT应用系统迁移技术方案
- 2024-2025学年人教版七年级数学上册期末检测试卷
- 小儿外科急腹症护理
- 住宅燃气工程竣工资料
- 泵站工程设计(共138张课件)
- 陕西省西安铁一中2025届物理高一上期中统考试题含解析
- JGJ∕T194-2009钢管满堂支架预压技术规程
- 宠物犬鉴赏与疾病防治智慧树知到期末考试答案章节答案2024年石河子大学
- 《四川大学SCI期刊分级方案》
- 管理原理及管理方法
- 幼儿园社会教育专题-考核测试题三(第五、六章)-国开(ZJ)-参考资料
评论
0/150
提交评论