(计算机应用技术专业论文)基于j2ee平台的数据访问中间件的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于j2ee平台的数据访问中间件的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于j2ee平台的数据访问中间件的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于j2ee平台的数据访问中间件的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于j2ee平台的数据访问中间件的研究与实现.pdf_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河海大学硕士论文基于j 2 e e 平台的敷据访闩中间件的研究与宾现 摘要 随着企业本身对于分布式处理的需求及i n t e r n e t 信息网络的飞速发展,现在 的网络信息系统对于数据交互效率、数据安全性以及系统的可扩展性等提出了更 高的要求。现有的数据库访问中间件已不能完全满足网络信息系统应用的t 述需 要。j 2 e e 环境下,数据访问主要采用非面向对象的j d b c 数据集访问方式,或 者采用e j b 技术中的实体b e a n s 技术。但是应用这两种技术于数据访问中间件开 发都不同程度存在着缺陷。 本文针首先分析了水利信息系统在使用j 2 e e 技术开发数据访问中间件过程 中存在的问题,然后结合当今中间件技术的发展趋势,给出了一个基于j 2 e e 的 b s 结构下的水利信息数据访问中间件模型。该模型使用轻量级容器,采用了 o rm a p p i n g 技术构建了o r m a p p i n g 持久层,一方面解决了对象关系模式不匹 配的问题,另一方面保证了数据访问中问件需要的事务、安全等方面的服务,并 使得中阳j 件系统有足够的扩展能力采用自定义的查询优化手段。同时针对水利信 息系统数据共享服务中数据查询远多于数据更新的特点,采用了对象缓存技术缓 存重复的业务逻辑结果,从而提高了系统的访问性能和多用户并发访问下的速 度。为了满足全局查询的需要,设计了一种基于代码迁移的优化框架,并对其中 的各个组件和实现机制进行了探讨。最后,本文讨论了该模型在江苏省水利基础 数据库系统中的应用,并通过一系列的对比和测试评估了其可行性和效率,为水 利信息领域内的应用提供了一个可参考的模型。 关键词:数据访问中间件、j 2 e e 、o r m a p p i n g 、轻量级容器、对象缓存、a o p 、 代码迁移 河海太学硕士论文 基于j 2 e e 平台的敷据访问中间件的研充与实现 a b s t r a c t w i t ht h e r e q u i r e m e n t s o fe n t e r p r i s ef o rd i s t r i b u t e dp r o c e s s i n ga n dt h er a p i d d e v e l o p m e n to fi n t e r n e ti n f o r m a t i o nn e t w o r k ,p r e s e n tn e t w o r ki n f o r m a t i o ns y s t e m s p r o p o s eh i g h e rr e q u i r e m e n t s f o re f f i c i e n c yo fd a t ai n t e r a c t i o n ,d a t as e c u r i t ya n d s y s t e me x t e n s i b i l i t y c u r r e n td a t a b a s ea c c e s sm i d d l e w a r ec a n n o tm e e tt h en e e do f n e t w o r ki n f o r m a t i o ns y s t e ma p p l i c a t i o ns a i da b o v e t h e r ea r et w od a t aa c c e s sc h o i s e s o naj 2 e ea p p l i c a t i o n o n ei st h en o n - o o pj d b cr o w s e t , t h ea n o t h e ri st h ee n t i t y b e a n so fe j b ,i ti sw e l lk n o w nt b a tb o t ho ft h e me x i s to b v i o u sl i m i t a t i o n s t h i st h e s i sf i r s t l ya n a l y s e st h ep r o b l e m st h a tw a t e ri n f o r m a t i o ns y s t e mi sf a c i n g w h i l e d e v e l o p i n g d a t aa c c e s sm i d d l e w a r eo i lj 2 e e p l a t f o r m c o m b i n i n g t h e d e v e l o p m e n t t r e n do fc u r r e n tm i d d l e w a r et e c h n o l o g i e s ,t h ea r t i c l ec o n c e i v e sam o d e l o fw a t e ri n f o r m a t i o nd a t aa c c e s sm i d d l e w a r eb a s e do nb ss t r u c t u r e a n dj 2 e e p l a t f o r mt h em o d e lu s et h el i g h tc o n t a i n e r a n do r m a p p i n gt e c h n i q u et ob u i l d p e r s i s t e n c el a y e r h i sd e s i g ng i v e t h es o l u t i o no fo b j e c t r e l a t i o n a li m p e d a n c e m i s m a t c ha n de n s u r et h es e r v i c et h a td a t aa c c e s sm i d d l e w a r ei sn e e d e d a sar u s u l t ,t h e m i d d l e w a r eh a st h ee n o u g he x t e n s i b l ea b i l i t yt oa d o p tu s e rd e f i n eo p t i m i z em e a n s t o a i ma tt h es i t u a t i o no i ld a t as h a r i n gs e r v i c eo fw a t e ri n f o r m a t i o ns y s t e mt h a tt h e n u m b e ro fq u e r ye x c e e du p d a t em u c hm o r e ,m o d e lm a k eu s eo ft h eo b j e c tc a c h e t e c h n i q u et oc a c h et h eb u s i n e s sl o g i cc o r n p u t e rr e s u l t t h ea c c e s sp e r f o r m a n c ea n d m u l t iu s e rc o n c u r r e n tr e s p o n dt i m ei m p r o v e t om e e tt h en e e do fg l o b l eq u e r y , t h e p a p e rd e s i g nao p t i m i z a t i o nf r a m e w o r kb a s eo nc o d es h i p p i n ga n dt h e nd i s c u s st h e c o m p n e n t a n di m p l e m e n t so ft h i sf r a m e w o r k f i n a l l y , t h et h e s i sd i s c u s st h ea p p l i c a t i o n o ft h i sm o d e li nt h ej i a n g s uw a t e rc o n s e r v a n c yf u n d a t i o n a ld a t a b a s es y s t e ma n d e v a l u a t ei t sf e a s i b i l i t ya n de f f i c i e n c yb yc o m p a r i s o na n dt e s t i n g ,i tp r o v i d e sam o d e l w h i c bc a nb er e f e r e n c e dj nt h i sd o m a i n k e y w o r d s :d a t aa c c e s sm i d d l e w a r e ,j 2 e e ,o rm a p p i n g ,l i g h tc o n t a i n e r , o b j e c t c a c h e ,a o p , c o d es h i p p i n g 基于j 2 e e 平台的数据访问中问件的研究与实现 学位论文独创性声明: 本人所呈交的学位论文是我个人在导师指导下进行的研究工作 及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工 作的同事对本研究所做的任何贡献均已在论文中作了明确的说明并 表示了谢意。如不实,本人负全部责任。 论文作者( 签名) : 学位论文使用授权说明 2 0 0 5 年6 月1 6 日 河海大学、中国科学技术信息研究所、国家图书馆、中国学术 期刊( 光盘版) 电子杂志社有权保留本人所送交学位论文的复印件或 电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子 文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外, 允许沦文被查阅和借阅。论文全部或部分内容的公布( 包括刊登) 授权 河海大学研究生院办理。 论文作者( 签名) : 2 0 0 5 年6 月1 6 日 河海大学硕士论文基于j 托e 平台的数据访问中问件的研宄与舞现 第一章绪论 1 1 研究背景 随着信息技术的迅速发展,尤其是i n t e m e t 和w w w 的出现,当今的企业, 由于竞争加剧、新技术的不断涌现,市场的快速变化,对自身信息化提出了新的 要求。如何通过网络互连,将分布在企业各个网络结点的独立信息资源有机地集 成为一个整体,实现数掘共享、资源共享茅口程序共享,以提高劳动生产效率和管 理水平,已成为企业信息化建设的重点。 传统的企业应用大都是基于数据库的传统的客户机n 务器模式,这也就带 来了系统互操作性差、扩充性差、难于移植等弊病,随着应用范围的扩大,也必 然影响系统性能的正常发挥,使系统性能不能很好地满足现今的性能需求。在此 背景下,人们提出了三层客户机n 务器模型,即在传统的两层的客户机和服务 器模型之间加一中间层中间件。 在水利部门的信息化建设中,很多地方部门已经初步实现了水情、工情、水 质等信息的采集传输和处理,并且都具有了自己的信息管理系统和数据库。这些 数据库的信息来源一般都是各个地方水利部门的分属站点的自动采集装置或者 采用手工批量录入的数据。为了访问分散在各地的各个水利部门的这些数据,需 要使用数据访问中间件技术。水利信息系统为了达到数据共享的目的,采用的数 据访问中恻件主要承担的是对这些部门的水利数据执行访问的任务,这些任务大 多数是以数据查询为主,数据更新值涉及相对较少。 现在存在的突出问题是:这些系统采用的系统结构多是两层的c s 结构,这 也就带来了系统互操作性差、扩充性差、难于移植等弊病;分散在各个下属的水 利部门,各个部门、各个地方之间很难达到信息共享使用的目的,现有的系统的 丌发一般都陷于具体的业务应用,没有整体的规划,而且,由于历史的原因,多 采用了不同厂家的数据库系统,再加上数据模式的不同,水利信息系统很难用一 致的模式访问数据库。 为了方便用户透明地访问位于不同网络结点的不同数据库,更加便乖q 地实现 数据集成,需要开发适合水利系统应用的使用数据访问中间件。 在文献 l j 中指出,数据访问中间件的目的,就是集成分布在计算机网络上的 不同数据源。通常,这些系统架构中是以一个数据集成服务为中心,通过它,用 户能以一个统一的视图和访问机制来访闻网络中的异地数据源。这种统一的视图 是以在每个数据源之上建立个全局的数据访问模式来实现的。 这种要求必然使软件的开发和使用面对的是网络环境这样的异构平台。在这 坷海大学硕士论文基于j 2 e e 平台的教据访问中问件的研究与宴现 种分布式的异构环境中,就会有多种情况出现:在不同的硬件;在不同的操作系 统:存在不同的系统软件、应用软件和开发工具;在多种风格各异的用户界面;存 在不同的网络连接。所有这些问题,对软件的开发提出了新的挑战,尤其是对大 规模软件的开发。如何在这样的异构环境中充分利用资源( 包括软件和硬件资源 等) 并开发新的应用,是一个非常现实而困难的问题。也就是说:中间件的使用 可以简化在异地或者异构数据源环境下访问数据的难度。但是,这种使用的简易 性是以把程序的复杂性转移给了中间件开发者为前提的。 企业级分布式软件的开发是一项复杂的任务,它不仅具有传统开发企业软件 的复杂性,同时,由于分布式系统的远程访问,安全以及事务、并发访问等问题, 都大大增加了丌发的难度。j 2 e e 的出现使得这种情况有了很大的改观。 j 2 e e 是以j a v a f f g 面向对象开发技术为基础,为开发复杂、分布式企业级j a v a 应用定义的一套体系结构。j 2 e e 让开发人员关注于业务逻辑,不用预先详细了 解执行环境而把精力放到系统实现上。同时,由于j 2 e e 支持组件化的开发,鼓 励开发人员的明确分工,这些都大大简化了开发的难度,促进了分布式企业应用 的广泛使用【2 i 。数据访问中问件逐渐从三层c i s 结构过渡到了多层b s 结构。 j 2 e e 的出现,部分解决了中间件开发中所面临的分布、异构等难题。随着 软件技术的不断发展,面向对象分析、面向对象设计、面向对象开发正逐步成为 主流的软件工程技术,但是数据库开发面对的主要还是关系数据库,这种情况在 牧长的时间内不太会改变。在面向对象编程和关系数据库之间,存在着两种不同 的模式。这神关系、对象模式的不匹配,使得基于o o p 的组件、构件思想不能完 全得以应用,给j 2 e e 环境下的数据访问中间件开发质量,带来了较大的影响。 在以往的研究中,数据访问中间件系统的研究工作主要集中于不同数据源集 成时的语义转换与语义集成问题,而对于( 1 ) 应用程序特定业务逻辑( 2 ) 用户定义 查询处理性能问题关注较少uj 。这几个问题会影响系统的可扩展性、易用性、效 率等,容易造成整个系统的瓶颈,从而使数据访问中间件效率不能得到有效保障。 然而剥于第一个问题目前有力的研究并不多,对于第二个问题的研究开始引起不 同研究部门较多的重视。 1 2 研究现状 m o c h a ( m i d d l e w a r eb a s e do nac o d es h i p p i n g a r c h i t e c t u r e ) 是一个可以实 现不同异地数据源互连的数据访问中间件,在文献中提到,为了解决数据访问 中间件的效率问题,数据访问中间件中应该部署部分客户业务逻辑的思想,通过 中f 、日】件来处理部分客户业务逻辑,这样可以减少访问数据中的网络部分数据传输 量,提高数据访问的效率。在m o c h a 中,数据访问中间件是自适应的,客户端 数据处理所需要的业务逻辑可以部署到远程的数据访问中间件中去。m o c h a 将 中间件分成两层:异构数据存取层和业务逻辑处理层。数据存取层具体负责数据 2 基于j 2 e e 平台的数据访问中间件的研充与实现 的读取写入,而通过迁移客户端的业务逻辑代码实现在中间件层的业务逻辑处 理。这种方式减少了网络数据传输的流量,提高了数据访问的效率,性能上可以 得到部分优化。m o c h a 受到当时技术的限制。仍然是基于传统的c s 结构,已 不能满足主流的使用b s 结构的需求。 g i e d r i u ss l i v i n s k a s 等在2 0 0 1 年数据处理国际会议上提出了类似的层次划分 方法,在位于不同数据源上的中间件中,将客户请求分为代数部分和标准s q l 语句部分,需要复杂计算的代数部分由中间件处理,而标准s q l 部分由相应的 数据库管理系统处理【3 ) 。t a n g o 系统就是一个基于上述思想的一个实现,在传 统数据库管理系统之上建立数据访问中间件,以向客户端提供数据访问服务,中 问件处理客户请求,在中间件中通过v o l c a n o 扩展查询优化方法和x x l 查询处 理库处理客户请求的复杂部分,从而在保证中间件数据存取功能的基础上,提高 了其数据存墩效率。t a n g o 同m o c h a 类似,基于c s 结构,而且是适用于实 时系统和时态查询,使用具有一定的局限性。 1 3 现有问题 1 中间件的开发效率问题。m o c h a 模型和t a n g o 模型为了降低程序的复 杂性问题,采用了划分层次的方法。层次的划分,使传统上由客户端和数据源端 处理的功能部分丌始向中间件方向转移。这也意味着中间件功能的增多,复杂性 的加大。使用j 2 e e 和其所提倡的面向对象和组件编程的方式技术可以降低这种 开发的复杂性。但是运用j 2 e e 技术在数据访问中间件的开发中遇到了难题。由 于对象和关系的不匹配问题,使得数据访问中间件的开发一直停留在以非面向对 象的数据集方式为主。当应用的规模较小时,这种方式的缺点还不明显。当应用 的规模和复杂度增大,特别是在企业级的数据访问中间件应用时,这种访问操作 数据库的s q l 代码和业务逻辑代码混杂的方式的缺点越来越明显。主要是中间件 的代码维护艰难,可扩展性差,开发工作量大等。本文设计采用o rm a p p i n g 技 术解决对象关系不匹配问题,使用o r m a p p i n g 层访问数据,使得组件开发和o o p 思想在数据访问中间件中得以应用。 2 中间件的访问效率。对于不同客户的业务逻辑存在较多重复的情况f , 如何提高访问的效率,在m o c h a 模型与t a n g o 模型中,也没有给出解决的办 法。而且,m o c h a 和t a n g o 都是传统的基于c s 结构,已不能满足目前分布式 开发主流的b s 结构的需求。o rm a p p i n g 技术使得数据访问采用对象的方式,本 文因此设计了对象缓存技术来提高并发访问的效率问题。 3 使用e j b 肃i e j b 容器带来的灵活性和效率问题。传统的j 2 e e 应用使用e j b 组件技术,数据访问中间件是一个以数据为中心的软件,而e j b 技术主要解决的 是以业务逻辑为中心的应用问题,数据访问功能只是下层的一个支撑服务。所以 当使用e j b 技术开发数据访问中间件时,用户很少能针对特定的应用需求对数据 河海走学硕士论文基于j 2 e e 平台的敷据访问中间件的研究与实现 访问做一些优化和控制。e j b 中的数据访问技术采用实体b e a n s ,实体b e a n s 的访 问效率较低。再加上e j b 技术的复杂性,如果采用e j b 技术和e j b 容器的话,中间 件的性能、灵活性往往得不到保证。本文提出采用轻量级容器结合j a v a b e a n 组件 技术作为e j b 的替代,采用a o p 技术保证p o j o s 具备e j b 同样功能,对以前由e j b 容器提供的事务、安全、远程通讯进行了设计。 4 水利信息系统中所需要的数据位于不同的站点,中间件如何满足高效地 提供全局查询这些站点数据,也是数据访问中间件应该解决的问题。查询优化技 术应该应用于水利信息系统数据访问中间件中,但如果采用了e j b 技术( c m t 容 器管理持久性技术) ,由于数据访问成为容器的一个下层服务功能,用户往往对 于数据访问缺乏足够的控制性和操作性,采用底层的j d b ca p t 直接访问带来的 复杂性,难以保证软件的质量,所以这种全局的查询优化机制很难应用在这样的 环境中。本文在j 2 e e 环境下设计采用了基于代码迁移技术的查询优化框架,并 对其中的关键功能组件进行了设计。 1 4 技术背景 1 4 1 分布式对象技术 分布式对象技术( d o t ) 是伴随网络而发展起来的一种面向对象( o o ) 的 技术,是分布式计算技术与面向对象技术的融合,它带来了位置的透明和不同技 术的无缝集成【4 。简而言之,d o t 是将数据和函数封装入对象,并且进一步将位 置封装进对象。把分布式对象技术运用到实际应用系统中包括三个基本方面:客 户,服务器和网络。其中客户就是用户界强,就是计算机,是寻找对象服务的入 口。服务器是分布式对象环境的处理中心,它们是信息存储和共享的地方,对于 任何面向对象的服务器,一个很重要的功能是如何进行数据的存储和查找。网络 不只是客户与服务器的简单聚集,它必须提供定位服务并引导对象的请求到 服务器。出此可见,分布式对象技术是由三个关键部分构成的,从开发者角度来 说,封装性提供了信息隐藏,这对信息系统的开发来说是十分重要的,因为他们 只需要依次去修改构件,而不需要重新设计整个系统,这无疑会为今后的维护带 来极大的方便。 1 4 2 中间件 在i s g ( i n t e r n a t i o n a ls y s t e m sg r o u p ) 的中间件自皮书中给的定义是:中间 件是一个介于商业应用和异构平台网络层和协议之间的一个独立层。它使商业应 用脱离了对包含异构操作系统、硬件和通讯协议的底层的依赖【6 1 。 中间件具有如下特点l 7 l :易于集成、易于移植、易于升级、高可靠性、易于 使用。 目前,针对不同的应用涌现出了各具特色的中间件,从不同的角度和层次对 中间件有不同的分类。根据中间件在系统中所起的作用和采用的技术不同,可以 4 珂海大学硕士论更 基于j 2 e e 平台的数据访问中间件的g - 完与实现 把中间件大致划分为以下几种【6 j : 1 数据访问中间件( d m :d a t a b a s e a c c e s s m i d d l e w a r e ) 2 远程过程调用中间件( r p c :r e m o t ep r o c e d u r ec a l l sb a s e dm i d d l e w a r e ) 3 面向消息中i 、自j 件( m o m :m e s s a g e o r i e n t e d m i d d l e w a r e l 4 面向刺象的中间件( o b j e c t o r i e n t e d m i d d l e w a r e ) 5 基于d t p 的中间件( d i s t r i b u t e dt r a n s a c t i o np r o c e s s i n g ( d t p ) b a s e d m i d d l e w a r e ) 1 4 3 主流中间件技术 1 j 2 e e 与n e t 为了开发多层w e b 应用,需要有相应的底层基础构架平台的支撑,s u n 的 j 2 e e 和微软n e t 提供了两大主流平台可供选择,它们占据了绝大部分的市场, 下面就这两种平台构架进行一些分析和比较。m i c r o s o f t n e t 与s u nj 2 e e 是目前 企业w e b 应用平台市场上两个最重要的应用框架。它们都在针对分布式多层应 用的设计、集成、性能、安全性和可靠性等诸多方面,为用户提供了总体的指南 和规范。基于这些指南和规范,技术提供商提供了相应的平台、工具和编程环境。 其特性比较如表1 1 所示 5 j 。 表1 1 j 2 e e 和i n e t 特性比较表 特性j 2 e en e - r 技术类型标准 产品 中f 日j 件供应商多 少 运行时环境 j r e c l r 动态w e b 页面j s pa s p n e t 业务层组件 e j b n e t 托管组件 数据访问 j d b c a d o n e t w 曲服务支持支持 支持 平台独直性 适用于任何平台仅支持微软 j 2 e e 和n e t 在目标和体系结构上极其相似,但在实现上又不完全相同。同 时,n e t 是一种产品策略,旨在成为一种行业标准,而j 2 e e 本身已经是一种标 准,有着众多厂商的支持。在可移植性方面,由于j 2 e e 具有良好的跨平台性, 可以方便地在不同平台阳j 移植,丽n e t 的所有技术都来自m i c r o s o f t ,可移植性 差。如今在三层多层分布式企业应用方面,已成为两个平台竞争的关键点。 总的来说,两个平台在技术应用上各有特点,但n e t 不是一个开放的服务 器平台,会造成技术过分依赖和缺乏移植性。而通过提供统一的开发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成的强有力支 持,完全支持e j b 组件开发,有良好的向导支持打包和部署应用,增强了安全机 河l 鲁走学硕士淹疋基于j 2 e e 平台曲数据访问中间件的研芄与妻现 制,提高了性能2 i 。j 2 e e 平台具有以下一些优点:基于j 2 e e 标准丌发的应用可 以跨平台地移植;j a v a 语言非常安全、严格,这使开发者可以编写出非常可靠的 代码;j 2 e e 提供了企业计算中需要的并种服务,且更加易用;j 2 e e 中多数标准 定义r 接口,例如r n d l 、j d b c 等,豳此可以和许多厂商的产品配合,容易得到 广泛的支持:j 2 e e 树立了一个广泛而通用的标准,大大简化了应用开发和部署 过程。 2 1 2 e ew e b 应用多层结构 s u n 设计j 2 e e 的初衷是为了解抉两层模式的弊端。在传统的两层模式中, 客户端担当了过多的角色i 显得臃肿。在这种模式中,第一次部署的时候比较容 易,但难于升级于改进,可扩展性也不理想,而且经常基于某种专有的协议 通常是某种数据库协议,它使得重用业务逻辑和界面逻辑非常困难。现在,j 2 e e 的多层企业级应用模型将两层化模型中的不同层面切分成许多层,一个多层化应 用能够为不同的服务提供一个独立的层。 图l 一1j 2 e e 体系结构分层示意图 使用j 2 e e 开发多层企业v v e b 应用通常在逻辑上把系统分为血层:客户层、 w e b 层( 表示层) 、业务层、集成层和资源层u ,w e b 层主要是由j s p 和s e l e t 组 成,业务层主要m e j b 组成。这些层町以看成一个堆。与相邻层松散耦合。这样, 一层接受一层的输入,并提供给另一层的输出。如图1 1 所示。实际上要从物理 上再考虑分层的话,就会真正理解n 层的含义,不同的客户请求得到处理之前所 经过的区域即称为崖【l 。 在j 2 e e 体系结构,为了达到传统意义上的数据访问中间件实现的功能,数 据访问中间件包含的不仅仅只是数据访问功能,而且还应该包含控制这些数据访 问的逻辑部分,即业务逻辑部分。所以数据访问中间件在j 2 e e 体系结掏下,应 波对应于业务层和持久层。数据访问中问件不但需要包含了分布式数据源透明访 问的功能,而且还应该包含特定的业务逻辑功能。本文的研究也正是基于这种层 次划分思想实现的, 】5 本文工作 本文主要研究了数据访问中间件的相关技术。在研究了目前水利信息系统的 特点及面临的问题后,提出了一个j 2 e e 环境下,脱离传统的e j b 技术,基于轻 坷海大学硕士砼文 基于j 2 e e 平台的数据访问中闻件的研究与实现 量级容器、o rm a p p i n g 技术和对象缓存技术,适用于水利信息系统的远程数据 访问中间件模型。 1 模型采用o rm a p p i n g 技术设计了o r m a p p i n g 数据访问层,解决了数 据访问中间件开发中的对象、关系模式不匹配的问题。 2 将数据访问中间件分为持久层和业务逻辑层,引入对象缓存技术,缓存 重复的业务逻辑结果,一定程度上解决了重复操作造成的数据访问效率较低的问 题。 3 针对水利信息系统的分布式查询需求,为了提高分布式查询的效率,模 型采用了一种基于代码自动分发的优化框架,设计了支持全局查询优化机制所需 要的环境。 4 在轻量级容器的环境下,设计了数据访问所必须的远程访问、事务、安 全性等j 2 e e 企业级服务的解决方案。 本文提出的基于j 2 e e 环境下的远程数据访问中间件体系结构,在水利信息 服务领域具有定的实用价值,解决了水文信息系统中开发难度大、数据访问效 率较低的问题,同时提供较好的安全控制,为此类系统的实现提供了参考框架, 使此类软件的开发效率得到了提高,并使应用此框架的系统的性能得到了优化。 1 6 本文组织 第一章为绪论。主要介绍论文的研究背景、研究现状、现有j 2 e e 环境中应 用存在的问题,相关的背景知识和文章针对现有的问题所采取的主要工作。 第二章主要是从整体上对j 2 e e 环境下的数据访问中间件的相关概念进行介 绍。首先介绍了j 2 e e 环境下实现数据访问的类型,接着介绍了对象关系不匹配 问题和具体的数据访问技术以及这些技术的优缺点。随后引入了轻量级容器、 a o p 的相关概念和在数掘访问中间件的。 第三章主要是按照的丽的设计思想,从整体上对数据访问中间件的结构和功 能模块进行了设计,并对j 2 e e 环境下数据访问中间件所需要的底层相关通讯、 枣务和安全服务进行了设计。 第四章根据水利信息系统的特点和存在的问题,详细设计了其中间件中元数 据库、o r m a p p i n g 、远程访问、对象缓存、全局查询优化框架这些关键点。 第五章将系统模型方案应用于“江苏省水利厅基础水情数据服务系统”,并讨 沦了其详细实现过程,对比分析了该模型与传统数据访问中间件模型的改进之 处,最后通过实验测试数据,对其性能进行了初步的评估。 第六章总结了本论文的研究工作,以及本课题进一步的研究与发展方向。 7 第二章j 2 e e 环境下的数据访问中间件 在企业内部构建数据访问中间件是一项复杂而艰巨的任务。j 2 e e 技术的使用 部分降低了丌发的难度。j 2 e e 环境下有多种数据访问技术,并有各自的优缺点。 由于数据库应用开发中对象关系模式的不匹配,导致在数据访问中间件的开发 中,采用非面向对象方式,不能完全采用j 2 e e 的基于构件编程方式。传统j 2 e e 实现方案e j b 数据访问技术中的实体b e a n s 只能部分解决这种不匹配的问题,同时 实体b e a n s 存在的性能问题、容器依赖性、开发的复杂性问题,使得数据访问中 间件的实现中不应该只考虑e j b 的方式。 为了避免采用e j b 技术的缺陷,满足数据访问中间件开发运行对于组件管理 和一些企业服务的需求,本章引入了轻量级容器的概念,并对其所使用 o c 技术 和a o p 技术做了初步的介绍,指出在中间件中采用基于i o c 原则的轻量级 j a v a b e a n s 的轻量级容器框架以及o r m a p p i n 9 2 1 2 j 墓框架的框架开发技术,采用设 计模式、a o p ( a s p e c to r i e n t e dp r o g r a m m i n g ) 的思想,可以很好的满足中间件开发 的质量和复用方面的需求。 2 1 数据访问实现方法的种类 1 直接代码嵌入 图1 显示了比较通常的做法,就是直接在业务逻辑中嵌入s q l 语句,实现 对象在关系数据库中的存取 1 ”。这样的好处是写代码效率很高,对于小型应用 程序或者原型,这样是可行的。缺点是直接耦合了业务逻辑类与关系数据库结构 ( s c h e m a ) ,这意味着任何小的改变( 例如对某一列重命名或者移植到另外一种数据 库) 都导致源代码级的修改。结构见图2 1 。 图2 - 1 直接代码嵌入持久化方法 2 数据类 在这种方法中,业务逻辑类的s q l 语句被封装在了一个或者多个“数据类” 目黾 目目 河海大学硕士论吏基干j 2 e e 平台的数据访问中间件的研究与宴现 中。这种方法也只适合原型较小的小系统。但是在对数据库进行点儿改动后, 也仍然需要修改和重新编译( 数据类) 。这种方法的例子包括开发存储过程( 用来代 替图2 2 中的数据类) 以及微软的a c f i v e xd a t ao b j e c t ( a d o ) 策略。对于这种方法来 说,最大的好处莫过于至少已经将处理交互的部分封装到了单独的数据类中。 豳渤暖畸 图2 2 数据类持久化方法 3 持久层 第三种方法就是建立将对象映像到某种持久机制( 在这里是关系数据库) 并 且对关系数据库结构的简单改动并不影响你的面向对象代码的一个持久层。这种 方法的好处是应用程序开发者不需要了解关系数据库结构,事实上,开发者甚至 不需要知道对象是保存在关系数据库中。这种方法允许组织开发大规模的针对关 键业务的应用程序。 2 2 关系模式和面向对象模式的不匹配 面向对象编程是继过程化编程之后,软件技术发展的一大里程碑。对象模型 能更好地描述和模拟现实世界。面向对象编程建立在具体的编程语言之上,但其 概念却超越了任何一门编程语言。利用它,可以把庞大丽复杂的软件系统分解成 多个对象部件。它还能解决由于过程化编程的缺陷所造成的“软件危机”。特别是 随着u m l 的标准化,把各种对象方法统一起来,让人们更易沟通。从而得到了 人们的欢迎。 关系数据库与面向对象数据库截然不同。关系数据库是有严谨的数学为基础 的关系模型,理论已经十分成熟,而且比面向对象数据库有趸长的历史。另外, 关系数据库在市场上占据绝对优势。但是,面向对象设计的机制与关系模型的不 同,造成了面向对象设计与关系数据库设计之间的不匹配 m 1 1 6 1 。 面向对象设计基于如耦合、聚合、封装等理论,而关系模型基于数学原理。 不同的理论基础导致了不同的优缺点 15 1 。对象模型侧重于使用包含数据和行为 的对象来进行构建应用程序;关系模型则主要针对于数据的存储。使用对象模型, 常常通过对象之湖的关系来进行访问:而根据关系理论,则通过表的连接、行列 的复制来实施数据的存取。这种基本的不同使两种机制的结合并不理想 1 6 】。i a v a 9 目| 目目 斟 目码一 目目 坷海大学硕士论文基于j 2 e e 平台的数据访问中问件的研究与宾现 语言一种面向对象的丌发语言,数据库访问中间件所需要访问的数据库,却大多 数都是基于关系模型的,如何解决这种不匹配的关系,也是中间件开发中需要解 决的问题。 在对象模型和关系数据库之间增加的持久层【l “,正可以解决这个问题。持 久层的目的,除了实现对象在关系数据库中的存取和尽可能消除对象模型与关系 数据库之间的不匹配外,更重要的是要实现对象模型与关系数据库之间的无关 性,即对象设计者在设计对象模型时,不必考虑数据库模式;另一方面,数据库 设计者在修改数据库模式时,也不必担心这种改变会影响到对象模型的逻辑结 构。实际上,持久层隐藏了对象在关系数据库中的存取细节。应用程序对象只需 要发出r e t r i e v e 、s a v e 等消息,持久层自动生成s q l 语句,然后从关系数据库中 取出数据以对象方式返回给应用程序对象或将应用程序对象中数据存储到关系 数据库中。由此可见,持久层的引进,可以使中间件的开芨者充分发挥面向对象 技术的优势,中间件自身的开发质量和效率能够得到充分的保证和提高。 2 3j 2 e e 中的数据访问技术 2 3 1 使用j d b c 数据集的数据访闻 j a v a 中最常用的数据访问方式是j d b c 。j d b c 是s u n 公司提供的,用来执 行s q l ( s t r u c t u r e dq u e r yl a n g u a g e ) 语句的j a v a 应用程序接口。j d b c 定义了j a v a 与数据库之问的接口类库( j a v as q l 包) ,它是j a v a 语言中执行s q l 语句的a p l , 它由一系列类和接口所组成,这些类和接口均是由j a v a 语言写成的,一个程序 丌发者可以通过它在j a v a 语言中建立与数据库的链接,执行s q l 语句和处理 s q l 语句返回的结果。它易于向任何关系数据库发送s q l 语句,支持对多种数 据库的访问。运用j d b ca p i ,只需写出单独一个程序就能够发送j d b ca p i 给 相应的数据库,如s y b a s e ,o r a c l e 或i n f o r m i x 等。j a v a 语言的中性结构和j d b c 的开放性使得程序员只需写一次程序就能让它到处运行。 j d b c 的r o w s e t 接口能够离线访问数据库。但是采用j d b c 的数据集方式, 从整个架构考虑会有以下几个严重的问题: 牺牲了类型安全 不是基于0 0 设计思想的 异常处理的问题。所有的数据集的g 吼方法都是从r e s u l t s e t 接口继承的,这 就意味着所有的异常都是j a v a s q l s q l e x c e p t i o n ,客户端被迫捕获这些异常。 数据库表名、列名和结构也就必须嵌入在客户端的代码。一旦数据结构改变, 客户端的代码整个也就需要随之改变。 u i 层应该只负责数据表示功能,如果采用了这样的访问方式,u i 层还必须 负责数据访问功能,违反了当初中间层出现的初衷:底层细节的抽象。 r o w s e t 接口中的许多方法都是与客户端无关的 1 0 诃海大学硕士论文基于j 2 e e 平台的敷据访问中问件的研究与实现 最重要的一个缺点是,由于网络带宽的限制,会使j 2 e e 应用程序的性能受到 很大的影响。因为需要从数据库传送大量未经任何处理的数据给数据库的客 户端,而实际上很可能l 层只需要其中很小的一部分。 采用基于s q l 的j d b c a p i 访问关系数据库被许多j a v a 应用程序广泛使用。 在执行基于数据集操作时,因为s q l 语言的强大,j d b c 访问开销很小。但是, j d b c 是一个低层次的a p i ,使用起来很不方便,s q l 代码和j a v a 代码还有数据 库的s c h e m a 紧紧绑定在一起,使得应用程序的质量和复用性都受到影响。它应 该被更高层次a p i 代替。在中间件的开发中,应该在j d b c 的基础上,设计出用 户更容易理解、便于使用的更高层次的接口和工具。 2 3 2 通过e j b 层访问数据 大部分的j 2 e e 都采用通过e j b 访问数据库。在分布式的j 2 e e 应用程序中, 这种方式具有一定的优势,w e b 容器中所涉及的代码都是依赖于架构底层( r e m o t e e j b s ) ,并没有直接和数据源通讯。 采用e j b s 方式访问数据的优势在于: 可以使用实体b e a n s 组件 可以从c m t ( 容器管理事务) 中受益,c m p 可以提供声明式事务,只需要事 务管理的访问可以在部署时由部署文件配置 所有的数据访问都通过唯的层来实现 实体b e a n s 是j 2 e e 组件中访问数据库的标准组件。持久层设计的目的是为 了降低业务逻辑和持久层逻辑之间的耦合关系。理论上实体b e a n s 是与数据源独 立的无论使用什么类型的数据源,都由实体b e a n s 提供抽象。这种模式中,实 体b e a n s 提供本地接口,出实现业务逻辑的s e s s i o n b e a n s 直接访闯。 但是,实体b e a n s 也有自身的缺陷: 1 使用实体b e a n s 是e j b 中访问数据的唯一选择,如果选挥了实体b e a n s ,就必 须使用e j b 。数据访问中间件是以数据为中心的软件,采用以业务逻辑为中 心的e j b 技术不是一个合适的选择。 2 实体b e a n s 只提供了初级的o rm a p p i n g 解决方案。由于实体b e a n s 生命周期 的限制,实现粗粒度的实体b e a n s 是很困难的。 3 实体b e a n s 中的b m p 存在严重的无法克服的性能问题,最典型的n 斗1 查询 问题。 4 实体b e a n s 自身的问题,姐陛能问题,可移植性的问题,以及部署、测试的 代价问题等。 由于b m p 需要手工实现数据访问代码,相对与j d b c 方式并未有太多优势。 。般e j b 中的数据访问主要还是采用c m p 的方式。但是c m p 采用e j bq l 作 为其查询语言,这种查询语言相对与s q l 功能弱了很多,对于负责的查询操作 珂海犬学硕士论文基于j 2 e e 平台的数据访问中间件的研充与实现 力不从心。如e j b q l 不支持子查询,不支持动态查询,无法用于批量u p d a t e 操 作,难以测试等。b m p 虽然有更大的灵活性,但却失去了c m t 的支持。采用 c m p b m p 混合的方法,可以获得更大的灵活性,但是又可能失去e j b 容器对实 体b e a n s 的缓存,对于实体b e a n s 的性能会有很大的影响。所以实体b e a n s 也不 是数据访问中问件实现的最佳选择。 2 3 3o rm a p p i n g 技术实现持久化 o rm a p p i n g 具有自我存储到关系数据库的能力,对对象的改变能够直接得 以存储,而不考虑数据库存取代码。这样,把全部精力集中到对对象和类进行编 程,解决业务问题。在整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论