




已阅读5页,还剩72页未读, 继续免费阅读
(计算机应用技术专业论文)整合hibernate的ejb框架下持久层组件及其组件迁移的研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学硕t 学位论文 摘要 随着以w e b 为中心的应用程序的发展,信息技术部门如何快速的构建大型 的企业级分布式应用成为关键,e 3 b 正是在此背景下出现的。但是e j b 难于学 习和使用已经成为e j b 或j 2 e e 发展壮大的致命因素,主要原因是实现持久层的 实体b e a n 技术映射的复杂度,不支持s q l 级的查询,并且不同厂商提供中间件 的差异性等缺陷,许多优秀的0 跚中间件应运而生,例:h i b e r n a t e ,i b a t i s , j d o ,t o p l i n k ,c a s t o r 等。 当今,面向对象软件设计成为软件开发技术的主流。o r m 作为面向对象设 计中的重要技术,其实质上是面向对象的域模型与关系数据库模型之间的映射 工具。h i b e r n a t e 以其映射的灵活性与开源特性,成为o r m 中问件的首选。它 不仅提供了o r m 映射服务,还提供动态查询、数据缓存和面向对象的查询语言 h q l 的功能,并且能够和多种w e b 服务器、应用服务器良好集成。 组件的静态部署限制了其在运行期间动态适应环境变化能力,为此提供一 种组件迁移的能力,以提高系统整体性能、吞吐量、灵活性和可扩展性。 本文研究的重点是j 2 e e 体系结构中的持久层组件与组件的动态迁移技术。 首先详细的讨论了j 2 e e 体系结构,其次深入的研究了e j b 体系结构中e j b 的分 类,及其各自的特点与生命周期。尤其详细的研究了e n t i t yb e a n 持久化的原 理以及主键生成策略,并分类进行了讨论。紧接着研究了h i b e r n a t e 框架的体 系结构与持久化原理的同时,比较了几种常用的o p a l 映射工具,在此基础上解 决了异步进程查询缓存的功能。针对e n t i t y b e a n 存在的缺点,引入h i b e r n a t e , 将两个框架集成在一起,为开发大型的分布式应用提供一种模型。 在整合h i b e r n a t e 的e j b 框架下提供e j b 组件的动态迁移的能力以实现负 载均衡、良好的通信能力与服务器重配置能力。首先比较了当前主流的组件开 发技术;其次详细的讨论了组件迁移的必要性,并设计了一种组件迁移的模型。 最后,针对组件迁移过程中所涉及的关键问题,设计了一种算法从而实现了组 件的动态迁移。最后,在整合的框架下,开发一个分布式应用系统。 关键词:e j b ,h i b e r n a t 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 ft a k i n gw e ba st h ec e n t r a la p p l i c a t i o np r o c e d u r e ,i ti s v e r yk e yt h a tt h ei n f o r m a t i o nt e c h n o l o g yd e p a r t m e n t sf a s tc o n s t r u c tl a r g e s c a l e e n t e r p r i s ed i s t r i b u t e da p p l i c a t i o n s ,h o w e v e r e i bp r e c i s e l ya p p e a r su n d e rt h i sb a c k - g r o u n d b u tf _ j bd i f f i c u l t yw i t hs t u d i e da n du s e da l r e a d yb e c o m e st h ef a t a ld a n g e r w h i c he f f e c t se j bo rj 2 e et og r o ws t r o n g , t h ep r i m a r yc a u s ei st h a te n t i t yb e a n w i t hr e s p o n s i b i f i t yf o rp e r s i s t e n to b j e c t st e c h n o l o g ym a p p i n gc o m p l e x i t y ,n o to n l y d o n ts u p p o r t st h es q ll e v e li n q u i r yb u ta l s ot h ed i f f e r e n tm a n u f a c t u r e r sp r o v i d e d i f f e r e n tm i d d l e w a r e sa n ds oo nf l a w s m a n yo u t s t a n d i n go r mm i d d l e w a r e sa r i s ea t t h eh i s t o r i cm o m e n t ,f o re x a m p l e :h i b e r n a t e ,i b a t i s ,j d o ,t o p l i n k , c a s t o ra n d s oo n n o w , t h eo b j e c t - o r i e n t e ds o f t w a r ed e s i g nh a sb e c o m et h em a i n s 仃e a mo ft h e s o f t w a r ed e v e l o p m e n tt e c h n o l o g y o r mt a k e sa st h ei m p o r t a n tt e c h n o l o g yi nt h e o b j e c t - o r i e n t e dd e s i g n , w h o s ee s s e n c ei sm a p p i n gt o o lb e t w e e no b j e c tt e r r i t o r y m o d ea n dr e l a t i o n a ld a t a b a s em o d e h i b e r n a t ew i t ht h ec h a r a c t e r i s t i co ft h eo p e n s o u r c ea n dm a p p i n gf l e x i b i f i t yb e c o m e st h ef i r s tc h o i c eo fa l lo r mm i d d l e w a r e s i t n o to n l yp r o v i d e so r m m a p p i n gs e r v i c e ,b u ta l s op r o v i d e so b j e c t - o r i e n t e dq u e r y l a n g u a g eh q l ,d y n a m i cq u e r y , d a t ac a c h i n ga n dc a l ln i c e ri n t e g r a t ew i t hv a r i o u s w e bs e r v e r sa n da p p l i c a t i o ns e r v e r s t h ec o m p o n e n ts t r u c t u r eo fs t a t i c a l l yc o n f i g u r e dd i s t r i b u t i o np r e v e n t sw e b a p p l i c a t i o nf r o mb e i n ga d a p t i v et ot h ec h a n g i n ge n v i r o n m e n t a la tn m t i m e i no r d e rt o e n h a n c et h ec h a r a c t e r i s t i cw h i c he n t r u s t sw i t hh e a v yr e s p o n s i b i l i t yt h en a t u r e ,t h e l a r g e s c a l eu s e r sv i s i tc o n c u r r e n t l y , t h ef r a m e w o r ks h o u l dp r o v i d et h ec a p a b i l i t y w h i c ht h ec o m p o n e n t sm i g r a t ea tr u n t i m et oa d a p te n v i r o n m e n t a lv a r i a t i o nt o e n h a n c et h es y s t e mo v e r a l lp e r f o r m a n c ea n dt h et h r o u g h p u t , t h ef l e x i b i l i t ya n dt h e e x t e n d i b i l i t y t h i st h e s i sr e s e a r c h e st h ek e yp o i n t , w h i c hi st h ej 2 e ea r c h i t e c t u r ep e r s i s t e n t a n dt h ec o m p o n e n t sd y n a m i cm i g r a t i o nt e c h n o l o g y f i r s tt h ej 2 e ea r c h i t e c t u r ei s d e t a i l e dd i s c u s s e dn e x t t h o r o u g hr e s e a r c h e se j ba r c h i t e c t u r ei n c l u d i n ge j b c l a s s i f i c a t i o n , r e s p e c t i v ec h a r a c t e r i s t i ca n dl i f ec y c l e e s p e c i a l l yd e t a i l e dr e s e a r c h e s 武汉理工大学硕士学位论文 e n t i t yb e a np e r s i s t e n tp r i n c i p l ea sw e l la st h ep r i m a r yk e yg e n e r a t i o ns t r a t e g i e s t h e f o l l o w i n gc l o s d yr e s e a r c h e st h eh i b e r n a t ea r c h i t e c t u r ea n dp e r s i s t e n tp r i n c i p l ea t t h es a m et i m e ,c o m p a r e dw i t hs e v e r a lk i n d so fc o m m o n l yu s e do r mm a p p i n g t o o l ,a n dh a ss o l v e dt h ea s y n c h r o n o u sa d v a n c e m e n ti n q u i r yc a c h ef u n c t i o ni nt h i s f o u n d a t i o n i nv i e wo ft h ee n t i t yb e a ne x i s t e n c es h o r t c o m i n g , h i b e r n a t et a k e sp l a c e o fe n t i t yb e a na n dt w of r a m e si n t e g r a t e st o g e t h e r , w h i c hp r o v i d e so n ek i n do f m o d a lf o rt h ed e v e l o p m e n tl a r g e - s c a l ed i s t r i b u t i o n a la p p l i c a t i o n t h ef r a m eo fi n t e g r a t e dh i b e r n a t ea n de j bp r o v i d e st h ed y n a m i cm i g r a t i o n a b i l i t yt or e a l i z el o a de q u a l i z a t i o n ,g o o dt r a f f i cc a p a c i t ya n ds e r v e rr e d i s t r i b u t i o n a b i l i t y , f i r s tc o m p a r e st h ec u r r e n tm a i n s t r e a mc o m p o n e n t sd e v e l o p m e n tt e c h n o l o g y , n e x ti nd e t a i ld i s c u s s e st h en e c e s s i t yw h i c ht h ec o m p o n e n t sm i g r a t ea n dd e s i g n st h e m o d e lt oa i ma to n ek i n do fc o m p o n e n t sm i g r a t i o n g ,i nv i e wo ft h ek e yq u e s t i o n w h i c hi nt h em i g r a t i o np r o c e s si n v o l v e s , t h u sd e s i g n e so n ea l g o r i t h mt or e a l i z et h e c o m p o n e n t sd y n a m i cm i g r a t i o n ,f i n a l l y , d e v e l o p sad i s t r i b u t i o n a la p p l i c a t i o ns y s t e m u n d e rt h ei n t e g r a t e df r a m e k e yw o r d s :e j b ,h i b e r n a t e ,q u e r yc a c h i n g , d y n a m i cm i g r a t i o n , r e c o n f i g e r a b l e 武汉理工大学硕士学位论文 1 1 研究背景 第1 章引言 i n t e r n e t 是改变我们彼此之间相互交流以及商务活动的最新技术,作为该 突破性技术的衍生技术j 2 e e 的诞生,使得开发基于w e b 的应用程序变的更有效 率、更为可靠“m 1 。j 2 e e 成为j a v a 服务器端的开发规范,许多应用服务器的供 应商遵循该规范提供了支持,比如s u n 、i b m 、o r a c l e ,b e a 、j b o s s 等。这些应 用服务器为开发者提供了主要的中间件服务,比如资源池( r e s o u r c ep o o l i n g ) 、 网络功能( n e t w o r k i n g ) 、安全性以及事务服务等,使得开发者能够专注业务应 用的本身,而且再也不用为构建健壮的服务器端应用部署而担心中间件的开发 和维护。 作为该规范的核心技术e j b 引入了快速应用开发( r a p i da p p l i c a t i o n d e v e l o p m e n t ,r a d ) 模型,使得开发人员能够在不用自身开发复杂分布式组件框 架的前提下,轻松构建企业级的、大型分布式组件应用,其便携性、可重用性 都是一流的。e j b 提供了两种持久化方式,分别为b e a n 管理持久化实体b e a n ( b m p ) 和容器管理持久化实体b e a n ( c m p ) 。前者是用手工完成持久化行为的,也即组 件的开发者必须手工开发代码,将内存中的持久化域存储到底层的存储源中。 而后者作为e j b 规范b m p 的替代者,它是借助于e j b 容器完成数据的持久化, 由于不同的e j b 容器提供了不同的工具,当c i i p 实体b e a n 组件部署到另一容器 时,将使映射的模型变的极为复杂,不得不重新指定映射关系。e j b 设计的缺 陷使得e j b 编程模型中最为重要的利器实体b e a n 的功能最弱,导致其倍受争议。 于是,j a v a 领域开始研究一些新的o b m 技术,其中h i b e r n a t e 以其灵活性 与开源等特点,成为多数企业的首选。h i b e r n a t e 不仅管理j a v a 类与数据库表 的映射,还提供了数据查询、获取数据和数据缓存的方法,把开发者从繁琐耗 时的对象关系的映射中解脱出来。h i b e r n a t e 既可以用于独立的j a v a 程序, 也可以适用于j a v aw e b 应用,而且还可以集成到会话e j b 和基于b m p 的实体 e j b 中。 信息时代,人们对信息的需求也越来越高,因此构建的系统也越来越庞大, 这就对系统的可靠性、可用性和有用性提出了更高的要求。e j b 组件静态部署 武汉理工大学硕士学位论文 在服务器中,当客户的需求增加时,某个节点负载加大,然而其他的节点资源 使用率却很低,这样造成了负载不均衡。并且当某个节点瘫痪时,通过复制的 方法将瘫痪节点上的组件部署在其他节点上会造成更大的冗余( r e d u n d a n c y ) 。 1 2 研究内容与意义 本文研究的主要内容是j 2 e e 体系结构中持久层组件及其组件迁移技术。 首先研究j 2 e e 体系结构中的核心技术e j b ,以及实现持久化的原理,同时, 和其他的持久化技术进行对比,从而指出无论是c m p 还是b m p 都存在很大的缺 陷;其次对h i b e r n a t e 持久化技术进行深入而细致的研究,它提供的o p a l 机制 不仅可以把一个对象映射到一个数据库表,也可以映射到多个数据库表,可以 实现多种实体关联关系、继承关系的映射;它提供的查询语言h q l 实现了o r m 的多态联接查询、动态查询和查询缓存的功能,它确保了o 删中间件没有“渗 透”到应用中,从而使上层组件与0 跚中间件保持较高的独立性,若日后改用 其他的o 跚中间件避免改写域对象的程序代码;最后再研究组件的动态迁移, 详细的讨论了组件迁移时所面临的问题即组件重配置一致性问题,根据组件迁 移的特点提出一种组件动态迁移的模型,并提供一种动态迁移的算法,从理论 上分析了其可行性。 通过持久层技术和组件迁移的研究,可以将开发中通用成熟的设计过程抽 象出来,结合e j b 快速开发和h i b e r n a t e 的优点,为日后构建大型的、高效的 分布式系统应用提供一种模型。 1 3 论文组织结构 本文的章节安排如下: 第一章为引言。首先对论文的研究背景进行了阐述,简单的介绍了e j b 和 h i b e r n a t e 解决持久层的特点,并指出了组件的静态分布不能适应运行期动态 变化的需要,其次介绍了论文的研究内容和意义,最后介绍了论文的组织结构。 第二章为基于e j b 的持久层解决方案。首先阐述了e j s 的基本概念与分类, 以及e j b 开发服务器端组件的模型,重点研究了主键生成策略,分类讨论了三 种b e a n 的特点、使用场合和生命周期,并针对两种类型持久化实体b e a n 进行 2 武汉理工大学硕士学位论文 讨论,指出了e j b 的持久层技术存在的问题。 第三章为h i b e r n a t e 持久化对象的原理。首先阐述了持久化的概念,接着 对当前的o r m 技术进行比较;其次对h i b e r n a t e 持久化机制进行深入的研究, 分析其实现持久化的原理,主要包括映射对象的标识符,关联、组成与继承关 系的映射;最后深入的研究了h i b e r n a t e 查询缓存的功能并解决了在异步进程 中查询缓存的问题。 第四章为组件迁移及其算法设计。首先阐述了组件技术的发展趋势,并比 较了当前流行的组件技术。指出了e j b 体系结构中组件的静态分布限制了组件 在运行期动态适应执行环境变化的能力,因此组件动态迁移是非常有意义的, 接着对迁移的过程中存在的问题进行了深入的研究;最后提出了一种迁移模型 并设计了一种迁移的算法。 第五章为基于e j b 与h i b e r n a t e 设计的应用,并综合运用了s e r v i c e l o c a t o r 和业务代理等设计模式。 第六章为总结与展望。对研究的课题进行了总结并对该课题的发展趋势进 行了展望,对尚需进一步完成的工作进行了探讨。 3 武汉理工大学硕士学位论文 第2 章e j b 体系结构下持久层解决方案 当前,随着w e b 需求的不断增长,使得w e b 的开发应用正向分布式结构的 方向发展,分布式计算屏蔽了系统中存在的异构性,提供了分布式对象间的互 操作机制。分布式计算州”是指在网络计算平台上开发、部署、管理、维护以资 源共享和协同工作为主要应用目标的分布式应用系统。分布式计算技术经历了 以信息共享为目的的客户服务器两层模型,发展到今天的在异构环境下互操作 为目的的面向对象的多层客户l i l t 务器模型。多层模型将分布在网络上的全部资 源( 无论是系统层还是应用层) 都按照对象的概念来组织,每个对象都有定义明 确的访问接口。创建和维护分布式对象实体的应用称为服务器,按照接口访问 分布式对象的应用称为客户。服务器中的分布式对象不仅能够被访问,而且自 身也可能作为其它对象的客户。因此,在分布式对象技术中,客户与服务器的 角色划分是相对的或多层次的。分布式对象存在于网络的任何地方,可被远程 客户应用以方法调用的形式访问。至于分布式对象是使用何种程序设计语言和 编译器所创建的,对客户对象来说都是透明的。客户应用无需知道它所访问的 分布式对象在网络中的具体位置以及运行在何种操作系统上,该分布式对象与 客户应用可能在同一台计算机上,也可能不在同一台计算机上。 分布式对象往往又被称为组件( c o m p o n e n t ) ,一些独立的代码的封装体,在 分布式计算的环境下可以是一个简单的对象,但大多数情况下是一组相关的对 象复合体,提供一定的服务,像e j b 、j a v a b e a n 和a c t i v e x c o m 就是分布式组 件。在分布式环境下,组件是一些灵敏的软件模块,它们可以位置透明、语言 独立和平台独立地互相发送消息,实现请求服务。 2 1j 2 e e 框架简介 j 2 e e ( j a v a 2p l a t f o r m , e n t e r p r i s ee d i t i o n ) 嘲鲫是美国s u n 公司1 9 9 9 年推 出的一种全新概念的模型,用于简化分布式企业级应用开发与部署的基于组件 的开发框架,它提供了一个多层次的分布式应用模型和一系列的开发技术规范。 与传统的互联网应用程序模型相比,它有着不可比拟的优势。j 2 e e 技术的基础 就是核心j a v a 平台或j a v a 2 平台的标准版,j 2 e e 不仅继承了标准版中的许多优 4 武汉理工大学硕士学位论文 点,例如:“一次编写,到处运行”,同时还提供了对e j b ( e n t e r p r i s ej a v a b e a n s ) 、 j a v a s e r v l e t sa p i 、j s p ( j a v as e r v e rp a g e s ) 以及x m l 技术的全面支持,并且 还包含以下7 个标准服务: ( 1 ) 符合c o r 队技术标准 c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ) 由对象管理组织提 出的一种分布式软件互联的标准。c o r b a 具有分布式软件总线的特点,它用高 度抽象的对象模型来表达应用系统、应用部件之间有效的通讯连接技术。因此, j a v a 程序可以和遵循c o r b a 技术标准的企业系统通信,也能和遗留系统交互。 ( 2 ) j a v a m a i1a p i 用于存取邮件服务器的a p i ,独立于协议用来发送并接收电子邮件消息的 a p i 。 ( 3 ) j a v a 消息服务( j a v am e s s a g es e r v i c e ,埘s ) j m sa p i 用来在j a v a 程序中建立组件之间的传输链路,这个链路支持异步 模式传输和接受容错消息。 ( 4 ) j a v a 事务a p i 用于事务监控和管理的a p i 。 ( 5 ) j a v a 命名和目录接口a p i 由于对象可能位于各个不同服务器的不同位置,通过该a p i 可以轻易的定 位对象。 ( 6 ) j d b ca p i 该a p i 为访问不同的数据库提供了一种统一的途径,j d b c 对开发者屏蔽了 访闷数据库一些细节问题,另外,j d b c 对数据库豹访问也具有平台无关性。 ( 7 ) 瑚l 部署描述符 x m l 是一种可以用来定义其它标记语言的语言,j a v a 采用) ( m l 作为存储、 操作和交换文档中文本信息。采用x m l 部署描述符定义组件的运行环境与功能。 2 2e j b 组件技术 e j b m l 是j 2 e e 体系结构中的组件,它主要为j 2 e e 应用程序提供业务逻辑, 并与服务器端其他的j 2 e e 组件交互。业务逻辑以及与其他服务器端j 2 e e 交互 的特性取决于j 2 e e 应用程序。 5 武汉理工大学硕士学位论文 e j b 是基于j a v a 构建服务器端组件的标准,它定义了两方面的内容。其一, 开发者如何开发服务器端组件。其二,e j b 规范为e j b 组件及管理它们的j 2 e e 服务器之间的关系定义了标准的契约( c o n t r a c t ) 。通过该契约,能够在e j b 组 件和j 2 e e 应用服务器之间达成一致,即所有的e j b 组件能够运行在所有的j 2 e e 应用服务器中。e j b 在j 2 e e 平台中占有很重要的地位,而且它使用了其他的j 2 e e 技术。 e j b 技术简化了用j a v a 语言编写的企业应用系统的开发,配置。e j b 技术 定义了一组可重用的组件:e n t e r p r i s eb e a n s 。开发者可以利用这些组件,像 搭积木一样的建立分布式应用程序。当开发者把代码写好之后,把这些组件组 合到特定的文件中去。每个文件有一个或多个e n t e r p r i s eb e a n s ,再加上一些 配置参数。最后,这些e n t e r p r i s eb e a n s 被配置至一个装了e j b 容器的平台上。 客户能够通过这些b e a n s 的h o m e 接口,定位到某个b e a n s ,e j b 容器产生这个 b e a n s 的一个实例。这样,客户就能够直接调用b e a n s 的应用方法和远程接口。 2 2 1e 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 2 2e j b 组件关键支撑技术 ( 1 ) r m i - i i o p 技术“” e j b 组件是基于分布式对象构建的,远程系统能够调用分布式对象,所遵 循的网络通信标准是基于i n t e r n e to r b 间协议的j a v a 远程方法调用( j a v a r e m o t em e t h o di n v o c a t i o no v e rt h ei n t e r n e ti n t e r - o r bp r o t o c o l ,简称 r m i i i o p ) 。进程内、外的用户及网络中的其他客户都能够与分布式对象进行交 互。r m i i i o p 不仅简单易用,而且功能强大。无论这些分布式对象处于何种j a v a 6 武汉理工大学硕士学位论文 虚拟机,还是何种物理设备中,其中的对象都能够相互通信。客户调用分布式 对象的具体过程如下: 客户调用存根( s t u b ) ,即为客户端提供的代理对象,存根屏蔽了网络通 信,能够使用s o c k e t 访问网络中的其他资源,期间将所需的参数构建为网络需 要的格式,这一过程称为压包( m a r s h a l l i n g ) 。 借助于网络,存根能够与服务器端的骨架( s k e l e t o n ) 进行交互。骨架是 为服务器端提供的代理对象。骨架将网络通信屏蔽掉,处理来自s o c k e t 的访问 请求,并将参数还原到初始状态这一过程称为解包( u n m a r s h a l l i n g ) 。 骨架将具体的客户调用委派给合适的分布式对象实现。对象负责完成具 体的访问请求,并将结果返回给骨架,骨架再将结果返回给存根,最后客户通 过存根获得分布式对象的相应结果。 客户端调用远程对象就犹如调用本地对象一样,正是借助与刚i i i o p 透明 的实现了网络功能,以便在任何硬件、操作系统问移植。j 2 e e 服务器实现 删i i i o p 提供生成存根和骨架的机制,将开发者从繁琐的网络编程中解脱出 来。 ( 2 ) j n d i 技术 j n d i “彻”( j a v an a m i n ga n dd i r e c t o r yi n t e r f a c e ,j a v a 命名和目录服务) 是j 2 e e 的a p i ,即客户端在初始化上下文中通过对象名引用对象。不同的厂商 提供的服务存在差异性,这就导致了命名与目录标准的差异性,客户端正是借 助于它提供的接口,能够通过名字定位用户、机器、网络、对象、服务的。不 管服务的提供者是轻型目录访问协议( l i g h t w e i g h td i r e c t o r ya c c e s s p r o t o c o l ,l d a p ) 、基于网络信息系统( n e t w o r ki n f o r m a t i o ns y s t e m ,n i s ) 还 是文件服务系统,客户端均可以通过标准的a p i 访问,它屏蔽了按名称访问对 象的实现细节。 j n d i 由两部分内容构成:客户a p i 和服务商接口( s e r v i c ep r o v i d e r i n t e r f a c e ,s p i ) 。客户a p i 使得j a v a 代码能够完成目录操作。无论何种目录类 型,使用的客户a p i 都是相同的。j n d is p i 是用于构建j n d i 实现的框架。借 助于s p i ,能够动态插入命名和目录服务提供商的产品。提供商借助于s p i ,能 够将其协议专属的目录产品集成到系统中,这就使得开发者只需要客户a p i 就 武汉理工大学硕士学位论文 能够访f 1 n 这类目录产品。j n d i 架构如图2 - 1 所示: 圃 : j n d i 客户a p i 服务提供者接口( s p i ) 眇p 服务提供者ip i s 服务提供者ij 文件系统服务提供者i 图2 1j n d i 架构 客户端正是基于嘲i i i o p 和j n d i 技术实现对e j b 的访问,首先将两i i i o p 服务器绑定到j n d i 中,然后再借助于j n d i 查找r m i - i i o p 服务器,以获得 对远程对象的访问。通常,j n d i 实现是同j 2 e e 服务器绑定在一起的,在启动j 2 e e 服务器时,j n d i 服务运行在j 2 e e 进程中,并处于运行状态。同时,j 2 e e 服务器也会提供j n d i 驱动,从而能够连接到j n d i 实现和客户。 2 2 3e j b 的组成部分 e j b 组件不是单一的文件,它是有几个j a v a 文件和x m l 文件组成的。它由 以下的部分组成: 企业b e a n 的b e a n 类。b e a n 类是j a v a 对象的实例,它含有本地或者远程 接口中定义方法的实现细节。b e a n 实例不具有网络能力,因为它不含有网络相 关的逻辑。 e j b 对象。e j b 容器生成的远程接口实现。它处于客户和企业b e a n 实例之 间,能够处理中间件相关的问题( 事务服务,安全性服务,持久化服务等) ,将 客户的调用委派给企业b e a n 实例,并且具有网络功能。 远程( r e m o t e ) 接口。它含有企业b e a n 类暴露的业务方法签名,是一个j a v a 类接口。客户代码总是和本地或远程接口交互,而不是直接和b e a n 交互。由于 遵守j a v ar m i 1 1 0 p 规则,因此具有网络功能。 h o m e 接口。e j b 推崇位置透明性,因此客户不能够直接实例化e j b 对象。 客户通过这一接口创建e j b 对象。 本地( l o c a l ) 接口。远程接口的高性能版本,若b e a n 类和客户端在同一个 8 武汉理工大学硕士学位论文 j a v a 虚拟机( j v m ) 中,使用本地接口可以避免存根、骨架、网络、参数的压包 和解包操作,因此能够实现细粒度任务的企业b e a n 。 本地h o m e 接口。h o m e 接口的高性能版本。部署描述符。x m l 文件,用于指 定企业b e a n 组件的中间件服务需求,比如如何管理企业b e a n 组件、生命周期 需求、事务需求、持久化需求以及安全需求等。 供应商特定的文件。e j b 规范并没有限制比如配置负载均衡、群集和监控 等功能,因此不同的e j b 服务器厂商提供的e j b 容器存在一些差异,由于容器 的差异性,从而降低了组件在不同服务器问的便携性。 e j b j a r 文件。含有上述文件的压缩文件,以便作为一个部署单元部署到 服务器上。应用服务器解压缩该文件,并装载其定义的企业b e a n 组件。 2 3e j b 类型及其生命周期 e j b 分为会话( s e s s i o n ) b e a n 、实体( e n t i t y ) b e a n 和消息驱动( m e s s a g e d r i v e n ) b e a n 三类。 2 3 1 会话b e a n 用来完成客户所要求的业务操作。作为业务过程对象,会话b e a n 能够实现 业务逻辑、业务规则、算法、工作流等。比如会话b e a n 能完成银行事务、股票 交易、数据库操作以及复杂运算等。 ( 1 ) 会话b e a n 的类型 根据状态的有无可以分为有状态会话( s t a t e f a l ) b e a n 和无状态会话 ( s t a t e l e s s ) b e a n 。 无状态会话b e a n ,即服务的业务过程只需要单个业务方法即可完成, 不需要维护客户多个方法调用期间的会话状态,在调用结束后,e j b 容器可能 会销毁无状态会话b e a n 实例,或者实例化新的实例,也可以保留前一会话b e a n , 以实现同一会话b e a n 的重用。 有状态会话b e a n ,即服务的业务过程能够延伸到多个方法请求或者事 务中,为完成这种业务过程,它需要为单个客户保存状态信息。为有效的和用 系统资源,加强e j b 系统的伸缩性,e j b 容器需要实现实例池的功能。由于有 状态会话b e a n 实例的数量是有限的,e j b 容器将按一定的挂起策略借助于对象 9 武汉理工大学硕士学位论文 序列化把会话状态转换成二进制b l o b 保存到硬盘或者其他存储源中,这一过程 称之为挂起( p a s s i v a t i o n ) ,以释放内存供别的应用使用。一旦客户再次调用被 挂起的有状态会话b e a n 实例时,将把写入持久存储源中的b l o b 读到内存中, 然后转换成有状态会话b e a n 实例的会话状态信息,这一过程称之为激活( a c t i v a t i o n ) 1 4 3 。 ( 2 ) 会话b e a n 的生命周期 会话b e a n 的生命周期与其他类型的企业b e a n 的区别很大,客户会话 ( c l i e n ts e s s i o n ) 的持续期决定了使用中的会话b e a n 的存活期。会话b e a n 仅 是内存对象,一旦其生存的环境遭到破坏,会话b e a n 也将不复存在。 2 3 2 消息驱动b e a n ( 1 ) m i ) b ,为实现高效的异步通信机制引入了岫b ,它不仅接受j m s 消息, 还接受其他消息类型。m i ) b 负责监j m s 目的地,一旦有消息到来,容器就调用 它的实例处理消息,实质上m i ) b 充当了消息消费者的角色。同其他企业b e a n 相比仅存b e a n 类,不存在其他的接口。 ( 2 ) m d b 的生命周期 m d b 仅存两种状态:不存在或者池化( p o o l e d ) “。当容器决定添加新的m d b 实例到实例池中是,它会创建新的m d b 实例。在服务器关机或者需要减少l l d b 实例池的大小时,将会删除池中的m d b 实例,并销毁实例池。 2 3 3 实体b e a n 实体b e a n 是持久化数据组件,含有数据相关的逻辑,如变更客户名、减少 银行账户的余额和修改订单等。该组件能够将数据永久性存储到持久化存储源 中,如r d b m s 、遗留系统中。在企业应用中,实体b e a n 是物理上可见的实体。 它将数据存储为成员变量,如银行账户、账户余额等。同时,实体b e a n 提供了 相关的方法,比如,g e t b a n k a e e o u n t n u m b e ro 、g e t a c c o u n t b a l a n c e ( ) 以获得账 户和余额。 实体b e a n 本质上只是对底层具有容错行为的持久化存储源中的数据的映 射,因此即使机器瘫痪,内存中的实体b e a n 还可以重新构建,从某种意义上说, 数据库中记录的存活时间决定了实体b e a n 实例的生命周期。 1 0 武汉理工大学硕士学位论文 2 4e j b 持久层解决方案 e j b 体系中,通过实体b e a n 完成持久化。实体b e a n 又可以分为b m p ( b e a n m a n a g ep e r s i s t e n t ) 与c m p ( c o n t a i n e rm a n a g e m e n tp e r s i s t e n t ) 两种。b m p 通常使用操作数据的a p i ,比如j d b c 手工完成持久化功能。c m p 实体b e a n 借助 容器自动实现数据访问与持久化业务逻辑。 2 。4 。1 实体b e a n 主键生成策略 许多的e j b 服务器提供了自动生成主键的策略,例w e b l o g i c 能通过数据库 构建的序列计数器自动生成组件。这仅适用于比较简单的情况。由于不同的c 妒 生成主键的方法不一致,若将应用代码从一个服务器迁移到另外一个服务器时, 可能会引起组件冲突“”。为使组件便于移植,需要用户通过程序控制实现。通 常有以下几种策略: ( 1 ) 序列块这种方法适用于实体b e a n 或者是会话b e a n 组合实体b e a n 的情 况。若使用实体b e a n 产生主键,需要b m p 方式,用户为产生主键的实体b e a n 建立数据表,另外还要处理并发访问。这种方式需要多次访问数据库,性能比 较低下。若采用改进的会话b e a n 和c m p 方式产生组件,性能稍有提高,有可能 使得主键值是不连续的,并且会引起主键值丢失,因为会话b e a n 的实例有可能 删除。 ( 2 ) u u i d 该方法产生一个3 2 b i t 的主键,既可以通过j a v a 中的单例( s i n g l e t o n ) 实现,又可以通过无状态的s e s s i o nb e a n 实现。卜8 位调用s y s t e m c u r r e n t t i m e m i l l i s 0 产生,9 1 6 位代表i p 地址,1 7 2 4 位调用s y s t e m i d e n t i t y h a s h c o d e ( t h i s ) 产生以区分同一个虚拟机或多个虚拟机中的不同对象,2 5 - 3 2 位调用j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年文化旅游特色小镇商业场地租赁服务协议
- 2025年城市绿化带养护管理服务合同协议
- 2025年度跨境电商供应链金融保证人合同
- 2025年度高品质智能家居系统安装与施工合同
- 2025年实木家具制造企业专用包装材料供应合同
- 2025年度外贸电商平台货物采购居间代理服务合同
- 地球与人类自然课件教学
- 非营业性汽车租赁协议范本
- 2025年高品质古建筑彩绘修复与维护工程合同
- 2025年跨区域合作项目保密条款合同(2025版)
- 华北理工选矿厂设计教案第16-17讲 辅助设备和设施的选择与计算
- 供应室提高腔镜器械清洗质量PDCA案例
- 电气控制及PLC应用-定时器、计数器指令介绍
- 100大产业链全景图正式版
- GB/T 22166-2008非校准起重圆环链和吊链使用和维护
- 公共营养师三级模拟题
- GA/T 928-2011法庭科学线形痕迹的检验规范
- (全科医学导论)4-全科医学的教育评价方法课件
- 烧结原料工技师实操考试题库(含答案)
- 大管棚施工记录表
- 石油建设安装工程费用定额
评论
0/150
提交评论