(计算机应用技术专业论文)基于j2ee钢铁交易系统数据持久层的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于j2ee钢铁交易系统数据持久层的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于j2ee钢铁交易系统数据持久层的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于j2ee钢铁交易系统数据持久层的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于j2ee钢铁交易系统数据持久层的研究与实现.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

武汉理t 大学硕士学位论文 摘要 近年来,由于计算机和网络技术的高速发展,企业信息化的成本已不再高 昂。各行各业都在建设自己的信息化平台。传统的钢铁交易市场也在建立自己 的网上信息平台,让用户在因特网上轻松实现了钢材的交易、加工、配送。网 上钢铁交易平台改变了传统的钢材销售模式。 目前,中国钢铁行业从计划经济向市场经济的转轨还没有到位,适应市场 经济的经营机制尚未确定,不能够完全以市场需求为导向,更无法积极响应顾 客、提供个性化服务。构建网上钢铁交易平台,可以改变钢铁厂商在供货链中 的作用,以期望直接服务于最终用户。 本文以华南钢铁交易网为研究实例,在研究j a v a 平台的数据化持久技术的 基础上,开发了该系统的数据持久化模块。在该系统的数据持久化实现技术中, 有多种技术可以选择,本文根据实际项目需求,选用了其中的两种持久化解决 方案,即h i b e r n a t e 持久化技术和j n i 技术。 h i b e r n a t e 是一个开放源代码的对象关系映射工具,是一个轻量级的数据持 久化工具。它拥有简明的对象关系映射结构,并提供了对事务处理的支持。它 有面向对象的h q l 数据库处理语言,方便程序员进行数据库的操作,同时它也 支持传统的j d b c 查询语言。j n i 是本地编程接口,它使得在j a v a 虚拟机( v m ) 内部运行的j a v a 代码能够与用其它编程语言编写的相关库进行互操作。根据具 体的业务需求,平台的部分模块需要用c 或c + + 语言来编写,所以有必要运用 j n i 技术来与这些模块进行交互。 本文前顽介绍了课题研究的背景,网上钢铁交易平台的基本概念以及它的 业务流程模型。接着,又介绍了三种比较典型的数据持久化技术,即e j b 实体 b e a n 方法,h i b e r n a t e 持久化框架,以及j n i 持久化技术。在对比分析了这三种 技术后,结合具体的数据需求,本平台选用了h i b e r n a t e 和j n i 持久化技术。最 后,本文详细介绍了数据持久化的实现流程。为保障网上交易数据的安全,本 文采用了u s b k e y 认证工具作为安全解决方法。 网上钢铁交易平台是一个典型的b 2 b 电子商业平台,本课题的研究为该平 台的构建提供了一个可靠的数据持久化解决方案。 关键词:钢铁交易,数据持久化,h i b e r n a t e ,e j b ,j n i 武汉理工大学硕士学位论文 a b s t r a c t i nr e c e n ty e a r s ,a sar e s u l to ft h er a p i dd e v e l o p m e n to ft h ec o m p u t e ra n dt h e n e t w o r kt e c h n o l o g y , t h ec o s tt oi n f o r m a t i o n i z et h ee n t e r p r i s ei sn ol o n g e rh i 曲s o m a n ye n t e r p r i s e sa r cb u i l d i n gi n f o r m a t i o np l a t f o r m e v e nt h et r a d i t i o n a ls t e e lt r a d e m a r k e ti sb u i l d i n gi t so w ni n f o r m a t i o np l a t f o r mo ni n t e r n e t ,w h i c hm a k e st h eu s e r s r e a l i z et h es t e e lp r o d u c t st r a n s a c t i o n ,a l l o c a t i o na n dd e l i v e r i n go n n t e m e t t h u st h e r e i sn on e e df o rt h et r a d e rt ol o o kf o rt h es t e e lp r o d u c t se v e r yc o m e r t h ep l a t f o r m c h a n g e st h et r a d i t i o n a le x c h a n g ep a t t e r no f s t e e lp r o d u c t s n o w , t h er e f o r mo fc h i n e s es t e e li n d u s t r yf r o mp l a n n e de c o n o m yt om a r k e t e c o n o m y , h a sn o tb e e nf i n i s h e dy e t t h et r a d es y s t e ma d a p t i n gm a r k e te c o n o m y h a s h t b e e nc o n s t i t u t e dc o m p l e t e l y , s oi tc a n tf o l l o wm a r k e td e m a n da n dc a n tr e s p o n s et o t h ec u s t o m e r sr e q u i r e m e n ti nt i m e t h eo n l i n es t e e le x c h a n g ep l a t f o r mc a l lc h a n g e t h ep o s i t i o no ft h es t e e lt r a d e ri nt h ew h o l es u p p l yf l o w , a n dw i s ht os e r v ef o rt h ef i n a l c u s t o m e r t h i sa r t i c l e w h i c ht a k e st h ed e v e l o p m e n to ft h es o u t hc h i n ae l e c t r o n i cs t e e la n d i r o nt r a n s a c t i o nn e t w o r ka sb a c k g r o u n d ,h a sd o n ed e t a i l e dr e s e a r c h e sa n dh a sr e a l i z e d t h ed a t ap e r s i s t e n c em o d u l eo ft h i st r a n s a c t i o np l a t f o r m t h e r ea r em a n yk i n d so fd a t a p e r s i s t e n c et e c h n o l o g yc a nb ec h o s e nt od e v e l o pt h es y s t e m ,a c c o r d i n gt ot h e r e q u i r e m e n to ft h ea c t u a lp r o j e c t ,ih a v ec h o s e nt h eh i b e r n a t ea n dj n ii n t e r f a c ea s d a t ap e r s i s t e n c et e c h n o l o g y h i b e r n a t ei sa no p e ns o u r c ea n dl i g h t w e i g h tl e v e ld a t ap e r s i s t e n c eo r mt 0 0 1 i t p o s s e s s e ss i m p l eo b j e c tr e l a t i o nm a p p i n gs t r u c t u r ea n do f f e r ss u p p o r t st oa f f a i r s t r a n s a c t i o n i to w n so b j e c t o r i e n t e dh q ld a t a b a s eq u e r yl a n g u a g ea n dc a nf a c i l i t a t e t h ew o r ko fp r o g r a m m e r a tt h es a m et i m e ,i tc a ns u p p o r tt r a d i t i o n a lj d b cs e a r c h l a n g u a g e st o o j n it e c h n o l o g yi st h el o c a lp r o g r a mi n t e r f a c e ,i tm a k e st h ej a v ac o d e w h i c hl a i ni nt h ej a v av i r t u a lm a c h i n ec a ne x - m a n i p u l a t ew i t ht h el i b r a r yw h i c hb e w r i t t e nu s i n gt h eo t h e rp r o g r a ml a n g u a g e a c c o r d i n gt ot h e s p e c i f i cb u s i n e s s r e q u i r e m e n t s o m em o d u l e so ft h ep l a t f o r mh a v eb e e nw r i t t e nu s i n gca n dc + + l a n g u a g e ,s oi ti sn e c e s s a r yt oa p p l yj n it e c h n o l o g yt oc o m m u n i c a t ew i t ht h e s e m o d u l e s 武汉理工大学硕士学位论文 t h ef i r s tp a r to ft h ep a p e ri n t r o d u c e dt h eb a c k g r o u n do ft h ep l a t f o r m 、a n dt h e b a s i cc o n c e p t so ft h es t e e lt r a d es y s t e ma n di t sb u s i n e s sf l o wm o d e l a t t h es a m et i m e t h i sp a p e ri n t r o d u c e dt h r e et y p i c a ld a t ap e r s i s t e n c et e c h n o l o g y , t h ee j b e n t i t yb e a n u s a g e ,h i b e r n a t ep e r s i s t e n c es t r u c t u r ea n dj n ip e r s i s t e n c e t e c h n o l o g y a f t e r c o m p a r e da n da n a l y z e dt h e s e t h r e e t e c h n o l o g i e s ,t h ep l a t f o r mh a sc h o s e nt h e h i b e r n a t ea n dj n ip e r s i s t e n c et e c h n o l o g y a n dt h e n ,t h ep a p e rd e t a i l e d l vi n t r o d u c e d t h ei m p l e m e n tp r o c e d u r eo ft h ed a t ap e r s i s t e n c e no r d e rt oi n s u r et h es a f eo f t r a d e d a t ao n n t e m e t ,t h es y s t e mh a su s e dt h eu s b - k e ya u t h e n t i c a t i o nt o o la st h es a f e s o l u t i o n t h eo n l i n es t e e le x c h a n g ep l a t f o r mi sat y p i c a lb 2 bc o m m e r c i a ls y s t e m t h i s r e s e a r c hh a sp r o v i d e dar e l i a b l ed a t ap e r s i s t e n c es o l u t i o nf o rt h ee s t a b l i s h m e n to ft h i s p l a t f o r m k e yw o r d s - s t e e le x c h a n g e ,d a t ap e r s i s t e n c e ,h i b e r n a t e ,e j b ,j n i i 丌 此页若属实请申请人及导师签名。 独创性声明 y8 6 0 9 弘 本人声明,所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得武汉理工大学或其它教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已 在论文中作了明确的说明并表示了谢意。 研究生签名:i 墨i 叁日期21 11 :生:卜 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定, 即:学校有权保留送交论文的复印件,允许论文被查阅和借阅: 学校可以公布论文的全部内容,司以采用影印、缩印或其他复制 手段保存论文。 ( 保密的论文在解密后应遵守此规定) 研究生签名:渣i 盘导师签名:主丛璺垦垂日期21 1 1 :土! ! ! 注:请将此声明装订在论文的目录前。 武汉理工大学硕士学位论文 1 1 课题背景 第1 章序论 随着信息技术发展和成熟,越来越多的传统企业已经意识到:新世纪将是 以信息技术为主导的知识经济时代。传统企业这棵大树只有深深扎下互联网的 根,才能枝繁叶茂,生机勃勃。钢铁工业是传统经济的一块基石,它深刻影响 着人类社会工业与文明的发展。面对世界钢铁市场的激烈竞争,粗钢产量位列 世界第一的中国将如何应对挑战? 本文将从国内钢铁市场的交易运营现状谈 起,结合b 2 b 电子商务,探索一种新的钢铁交易模式。 当前,中国钢铁行业从计划经济向市场经济的转轨还没有到位,适应市场 经济的经营机制尚未确定,不能够完全以市场需求为导向,更无法积极响应顾 客、提供个性化服务。构建中国网上钢铁交易平台,可以改变钢铁厂商在供货 链中的作用,以期望直接服务于最终用户。中国作为世界上最大的钢铁生产国, 其每年产量有很大比例由众多中小钢厂生产。因此中国钢铁工业这种规模小、 分布零散的特点有利于钢材贸易商经营。他们作为其上游( 钢铁生产者) 和其下游 f 其它贸易商和最终用户) 的中介,并最终获取利润。然而,价格波动如此剧烈, 只有大型贸易商才能依靠其巨大的贸易量求得生存,因为小量贸易还不够维持 企业一般的管理费用,那些小型贸易商经营将会十分困难。因此,小型贸易商 在寻求着其它快速低廉获取信息的方法。 构建专业化的网上b 2 b 钢铁交易平台,目的是为钢铁销售和购买者提供降 低成本的解决方法。这些具体到钢铁工业的电子商务平台,可为钢铁供需提供 多种渠道并实现更为快捷的交易活动,如网上竞卖竞买投标等。重要的是,网 上交易平台能提供便利的集中物流服务,所以在激烈的价格竞争中具有更大的 优势。一旦网上交易平台将其服务延伸到供应链的每一层时,那么由贸易商在 钢铁生产者和最终用户之间进行联系所增加的那部分成本将会消失。将来,如 果贸易商不能提供特有增值服务的话。那么作为中间人的贸易商将会被网上交 易平台所取代。但是,贸易商自己也可能吸引大量的买方和卖方,发展他们自 己的网上交易平台。 武汉理_ l = 大学硕士学位论文 1 2 研究的目的和内容 目前国内外关于b 2 b ,b 2 c 方面系统的研究处于比较活跃的发展状态, 并且也有了许多成熟的案例,如大型的b 2 c 站点h t t p :w w w a m a z o n c o m ,它是 典型采用j 2 e e 构建的系统。另外还有部分系统采用n e t ,c o m + 构建。这些系 统显然都接受了市场的考验,结论可以说是非常成功的;但是系统的构建,维 护的投资也是巨大的,这种解决方案根本不适合中小型规模企业系统的构建。 为此本论文选题研究旨在为中小型钢铁交易企业构建b 2 b 系统提供一个投资 小,维护方便,伸缩性强的解决方案。 成熟的b 2 b 系统相当一部分是采用j 2 e e 标准构建,选用s u ne j b 实现 了部分中间件的设计,这是典型的重量级别的设计思路,由于e j b 支持跨平 台,分布式计算等特点,所以对于对性能,吞吐量很大的系统是非常适合的。 系统可以采用e j b 容器对联网的s e r v e r 进行集群控制,快速协作完成复杂 的计算任务。但对于中小型企业而言,它们对b 2 b 的交易模式有一定的需求, 但是它们不可能花巨资来构建大型的系统,实际上这种类型的企业并没有复 杂的计算需求,不过他们对系统的稳定性,可维护性,安全性等是有很高的 要求的。有鉴于此,本文提出了一个基于j 2 e e 模式的轻量级解决方案。 本文采用s t r u t s 框架作为系统的表示层,使用h i b e r n a t e 作为系统的o r 映 射层,同时针对一些特殊的模块,采用了自定义的数据持久化方案。数据持久 化一直是企业计算中最重要的一部分。h i b e r n a t e 是一个开放源代码的对象关系 映射框架,它对j d b c 进行了非常轻量级的对象封装,使得j a v a 程序员可以方 便的使用对象编程思维来操作数据库。h i b e r n a t e 可以应用在任何使用j d b c 的 场合,既可以在j a v a 的客户端程序实用,也可以在s e r v l e t j s p 的w e b 应用中使 用。最具革命意义的是,h i b e r n a t e 可以在应用e j b 的j 2 e e 架构中取代c m p , 完成数据持久化的重任,从而实现轻量级的持久化方案。耳j 1 3 本文组织 本课题研究的是一个典型的b 2 b 商业系统,本文侧重于讨论了该系统的数 据持久化部分,给出了一个轻量级的数据持久化方案,同时也概述了该系统的 业务设计思想。具体分为如下内容来进行叙述: 武汉理工大学硕士学位论文 1 ) 阐述网上钢铁交易平台的基本概念,国内外的状况和发展现状。 2 1 概述了常用的数据持久化技术,如e j b 技术,h i b e r n a t e 接口,阻及自定义 的持久化技术。 3 1 详述了网上钢铁交易平台的系统结构设计。 4 ) 对三秘数据持久化技术的优缺点进行了对比,并结合具体的数据需求采用了 其中的两种方案,并详细的叙述了实现的流程。 5 、最后对全文进行了总结,同时提出了进一步改进和发展的意见。 武汉理工大学硕士学位论文 第2 章数据持久化相关技术概述 2 1e j b 持久化技术简述 2 1 1e j b 技术概述 e n t e r p r i s ej a v a b e a n ( e j b ) 规范定义了开发和部署基于事务性、分布式对象应 用程序的服务器端软件组件的体系结构。企业组织可以构建它们自己的组件, 或从第三方供应商购买组件。这些服务器端组件称作e n t e r p r i s eb e a n ,它们是 e n t e r p r i s ej a v a b e a n 容器中驻留的分布式对象,为分布在网络中的客户机提供远 程服务。 两层和三层环境: 在两层客户机服务器环境中,程序员编写与供应商特定软件紧密结合的 应用程序。通常在两层体系结构中,客户机直接访问数据库服务或事务服务。 有时这种应用程序称作胖客户机,因为应用程序逻辑驻留在客户机上,这使客 户机变得庞大和复杂。 三层客户机服务器体系结构使用一个中间层,中间层存储了系统的商业 逻辑,并封装了操作数据库的程序模块。 在两层模型上使用三层体系结构是出于以下两个动机: ( 1 ) 改进可伸缩性、可用性和性能。 ( 2 ) 改良商业系统灵活性和可扩展性。 由于两层系统利用了客户机的处理能力,因而它具有良好的性能,但许多 客户机对单一后端资源的特性会产生瓶颈,随着客户机数量逐渐增大,这会抑 制可伸缩性、可用性和性能。三层系统试图通过更有效地管理后端资源来消除 这个瓶颈。利用资源管理技术,如合用和集群中间层服务器,可以实现这个目 标。合用允许许多客户机共享并不充足的资源,这样可以减少后端服务器的工 作负荷,从而使三层系统更有效。由于多个服务器和资源可以支持故障恢复并 均衡不断增加的客户机数量的负载,因此集群可以使三层系统变得更具可用性 和可伸缩性。 三层系统比相应的两层系统更灵活且更可扩展,这是因为商业逻辑和服务 ( 如安全性和事务) 都驻留在中间层,并且基本上独立于客户机应用程序。如 武汉理上大学硕士学位论文 果正确实现了三层系统,那么在使用e n t e r p r i s ej a v a b e a n 的情况下,服务会自 动应用于客户机请求,因此服务是看不见的。由于服务对于客户机不可见,因 此对服务的更改也不可见。如果正确实现了三层系统,那么中间层上对商业逻 辑的更改和增强也可对客户机应用程序隐藏。 另外,如果客户枫与中间件组件是以j a v a 编程语言实现的,那么它们极有 可能具有可移植性。可以非常容易地将实现客户机和应用程序服务器的类文件, 重新安置到当前最合适的主机上。 随着面向对象编程范例日益普及,分布式对象系统已经逐渐壮大。现在已 经存在一一些分布式对象技术。最流行的是由o b j e c tm a n a g e m e n tg r o u p 创建的 c o r b a 、s u nm i c r o s y s t e m s 的j a v ar m i ( j r m p ) 和m i c r o s o f t 的d c o m 和 m t s ( 又名c o m + ) 。每种都有其自身的优缺点。s u nm i c r o s y s t e m s 的e n t e r p r i s e j a v a b e a n 是最近也加入这个圈子的技术。在某些方面,它既是这些技术的竞争 者,同时也是合作者。 由于在三层计算中使用了其它开放标准( 如i j i ) a p ) ,c o r b a ( 公共对象 请求中介体系结构) 在解决供应商垄断问题方面取得了成功。然而,虽然c o r b a 根本改变了分布式计算,但经验证明编程模块太复杂,而且供应商不能一致地 遵守规范。c o r b a 有高级的分布式计算,但已证明太难而无法实现,并且其可 移植性也比预期差。1 5 1 e n t e r p r i s ej a v a b e a n ( e j b ) 是s u nm i c r o s y s t e m s 对c o r b a 的可移植性和复 杂性的解决方案。f a b 引入了比c o r b a 更简单的编程模块,它可以让开发人员 创建可移植分布式组件,称作e n t e r p r i s eb e a n 。e j b 编程模块可以让开发人员创 建安全的、事务性的和持久的商业对象( e n t e r p r i s eb e a n ) ,该对象使用非常简单 的编程模块和声明属性。与c o r b a 不同,例如访问控制( 授权安全性) 和事务 管理等设施非常易于编程。c o r b a 需要使用复杂的a p i 来利用这些服务,而 e j b 根据一种称作“部署描述信息”的特性文件中的声明将这些服务自动应用到 e n t e r p r i s eb e a n 。这个模型确保了b e a n 开发人员可以集中精力编写商业逻辑。f 1 1 e n t e r p r i s ej a v a b e a n 简化了分布式对象的开发、部署和访问。e j b 分布式对 象的开发人员只需依照为e n t e r p r i s ej a v a b e a n 建立的契约和协议实现对象。支持 e j b 的应用程序服务器可以使用任何分布式网络协议,包括本地j a v a r m i 协议 o r m p ) 、专有协议或c o r b a 的网络协议( i i o p ) 。不管在某个特定产品中使用 的基本网络协议是什么,e j b 使用相同的编程a p i 和语义,以j a v ar m i i i o p 访 武汉理工大学硕士学位论文 问分布式对象。协议的细节对应用程序和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 ,下面一节将重点讨论两种实体b e a n 。 会话b e a n : s e s s i o nb e a n 是一种通过h o m ei n t e r f a c e 创建并对客户端连接专有的 e m e r p r i s eb e a n 。会话b e a n 实例一般不与其它客户端共享。这允许会话b e a n 维 护客户端的状态。定义一个会话b e a n 可以通过定义一个实现 j a v a x e j b s e s s i o n b e a n 接i :1 的类来创建一个会话b e a n 。 4 1 该接e l 定义如下: p u b l i ci n t e r f a c ej a v a x e i b s e s s i o n b e a ne x t e n d sj a v a x e j b e n t e r p r i s e b e a n p u b l i cv o i de j b a c t i v a t e 0t l l r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i de j b p a s s i v a t e 0t l l r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i de j b r e m o v e 0t h r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i ds e t s e s s i o n c o n t e x t ( s e s s i o n c o n t e x tc o n t e x t ) t h r o w sr e m o t e e x c e p t i o n ; ) i a v a x e j b e n t e r p r i s e b e a n 是一个空接口,是会话b e a n 和实体b e a n 的超类。 会话b e a n 的交换: 容器开发商可以实现把会话b e a n 的实例从主存移到二级存储中的交换机 制,这可以增加一段时间内实例化的会话b e a n 的总数。容器维护一个b e a n 的 时间期限,当某个b e a n 的不活动状态时间达到这个阙值,容器就把这个b e a n 拷贝到二级存储中并从主存中删除。容器可以使用任何机制来实现b e a n 的持久 性存储。最常用的方式是通过b e a n 的串行化。b e a n 开发者在b e a n 中应避免使 用t r a n s i e n tf i e l d s 。e j b a c t i v a t e 0 和e j b p a s s i v a t e 0 用来维护这个f i e l d s 值。 活化和钝化: 为了支持厂商提供会话b e a n 的交换,规范定义了钝化,把b e a n 从主存转 移到二级存储的过程,活化即是把b e a n 恢复到主存中去的过程。在s e s s i o n b e a n 接口中声明的e j b a c t i v a t e ( ) 年e le j b p a s s i v a t e 0 方法,允许容器通知已经被活化的 b e a n 它将要被激活和钝化。b e a n 开发者可以用这些方法释放和恢复处于钝化状 态的b e a n 所占有的值、引用和系统资源。个可能的例子是数据库连接,作为 有限的系统资源,不能被钝化的b e a n 使用。 武汉理工大学硕士学位论文 有了这些方法就使得不必再使用t r a n s i e n t 。事实上,使用t r a n s i e n t 可能是 不安全的,因为串行化机制自动地把值设为n u l l 或o 。而通过e j b a c t i v a t e ( ) 和 e j b p a s s i v a t e 0 方法显式地设置这些f i e l d s 更好一些。依靠j a v a 的串性化机制把 t r a n s i e n tf i e l d s 设成n u l l 也是不可移植的,因为当b e a n 部署在不使用j a v a 的串 性化机制,获得持久性的e j b 容器中时该行为会发生改变。如果容器不提供交 换,那么这些方法将永远不会被调用。 当客户端调用b e a n 的商业方法时钝化的b e a n 被激活。当e j b o b j e c t 收到方 法调用的请求时,它通知容器需要活化的b e a n 。当活化完成时,e j b o b j e c t 代理 对b e a n 的方法调用。 如果b e a n 参与一个事务,那么它不能被钝化。把b e a n 放在主存中更有效 率,因为事务通常在很短的时间内完成。如果b e a n 没有钝化前必须释放或活 化前必须重爱的状态,那么这些方法可置空。在大多数情况下,b e a n 开发者不 必在这些方法中做任何事。 会话b e a n 的状态管理: 会话b e a n 的部署描述符必须声明该b e a n 是有状态或无状态的。一个无状 态b e a n 是在方法调用间不维护任何状态信息的b e a n 。通常,会话b e a n 的优点 是代替客户端维护状态。 然而,让会话b e a n 无状态也有一个好处。无状态b e a n 不能被钝化。因为 它不维护状态,所以没有需要保存的信息。容器可以删除b e a n 的实例。客户端 永远不会知道无状态b e a n 的删除过程。客户端的引用是e j b o b j e c t 如果客户端 稍后又调用了一个商业方法,则e j b o b j e c t 通知容器在实例化一个新的会话b e a n 因为没有状态,因此也没有信息需要恢复。 无状态b e a n 可以在客户端间共享,只是在某一时刻只能有一个客户端执行 一个方法。因为在方法调用间没有需要维护的状态,所以客户端可使用任何无 状态b e a n 的实例。这使得容器可以维护一个较小的可重用b e a n 的缓冲池,节 省主存。因为无状态b e a n 在方法调用闯不能维护状态,因此从技术上讲在h o m e i n t e r f a c e 的c r e a t e 0 方法不应有参数。在创建时向b e a n 传递参数意味着在 e j b c r e a t e 0 返回时需要维护b e a n 的状态。而且,经由e j b o b j e c t 调用商业方法的 结果使得容器必须能重创建一个无状态的b e a n 。这时在开始创建b e a n 时的参数 就不存在了。厂商的安装工具应该能检查h o m ei n t e r f a c e 的无状态对话b e a n 以 保证其不包含带参数的c r e a t e ( ) 方法。 武汉理t 大学硕士学位论文 下面开始介绍另外两种实体b e a n ( e n t i t yb e a n ) 。 2 1 2 两种实体b e a n 的原理 实体b e a n : 实体b e a n 用来代表底层的对象。最常用的是用实体b e a n 代表关系库中的 数据。一个简单的实体b e a n 可以定义成代表数据库表的一个记录,也就是每一 个实例代表一个特殊的记录。更复杂的实体b e a n 可以代表数据库表问关联视图。 在实体b e a n 中还可以考虑包含厂商的增强功能,如对象一关系映射的集成。 通常用实体类代表个数据库表比代表多个相关联的表更简单且更有效。 反过来可以轻易地向实体类的定义中增加关联。【1 j 实体b e a n 和会话b e a n 的比较: 实体b e a n 代表底层数据库的一彳亍,则实体b e a n 实例和数据库记录问就是 一对一的关系。因为多个客户端必须访问底层记录,这意味着,不同于会话b e a n , 客户端必须共享实体b e a n 。因为是共享的,所以实体b e a n 不允许保存每个客户 端的信息。会话b e a n 允许保存客户端的状态信息,客户端和会话b e a n 实例间 是一对一的。实体b e a n 允许保存记录的信息,实体b e a n 实例和记录间是一对 一的。一个理想的情况是客户端通过会话b e a n 连接服务器,然后会话b e a n 通 过实体b e a n 访问数据库。这使得既可以保存客户端的信息又可以保存数据库记 录的信息。【1 4 】 同时会话b e a n 也不能提供在相同或不同的e j b 类调用间进行全局的事务控 制。没有会话b e a n ,应用程序开发者( 客户端开发者) 就必须理解e j b 类的事 务要求,并使用客户端的事务划分来提供事务控制。e j b 的主要好处就是应用开 发者不需知道e i b 类的事务需求。一个会话b e a n 可以代表一个商业操作,进行 事务控制,不需要客户端进行事务划分。 实体b e a n 的内外存交换: 现在应该来看看j a v a x e j b e n t i t y b e a n 接口。 p u b l i ci n t e r f a c ej a v a x e j b e n t i t y b e a ne x t e n d se n t e r p r i s e b e a n p u b l i cv o i de j b a c t i v a t e 0t l l r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i de j b p a s s i v a t e 0t h r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i de j b r e m o v e ot h r o w sr e m o t e e x c e p t i o n ,r e m o v e e x c e p t i o n ; p u b l i cv o i ds e t e n t i t y c o n t e x t ( e n t i t y c o n t e x tc t x ) t h r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i du n s e t e n t i t y c o n t e x t 0t h r o w sr e m o t e e x c e p t i o n ; 武汉理工大学硕士学位论文 p u b l i cv o i de j b l o a d 0t h r o w sr e m o t e e x c e p t i o n ; p u b l i cv o i de j b s t o r e 0t h r o w sr e m o t e e x c e p t i o n ; ) 活化和钝化的过程与会话b e a n 类似。然而,不在事务中的实体b e a n 是无 状态的;其状态总是和底层的数据同步的。如果我们象钝化会话b e a n 那样钝化 实体b e a n ,则当钝化无状态实体b e a n 时只会删除它。但是因为容器调用f i n d e r 方法需要匿名的实体b e a n ,容器可能为此把不活动的实体b e a n 钝化到一个私有 内存池中。旦从e j b o b j e c t 中删除实体b e a n ,则同时删除了标识符。 当客户端调用没有相关的实体b e a n 的e j b o b j e c t 的商业方法时,容器就可 能用这个内存池重新分配实体b e a n 注意这个内存池中的b e a n 没有标识,可以 被任何e j b o u e c t 重用。容器可以可以不维护任何有e j b o b j e c t 的实体b e a n ,除 非有一个商业方法在通过e j b o u e c t 被调用。如果实体b e a n 在事务中则需保持 其与e j b o b j c o t 的关联。 自管理的持久性: 因为实体b e a n 代表底层的数据,因此我们需要把数据从数据从数据库取出 然后放在b e a n 中。当容器第一次把一个实体b e a n 的实例与e j b o b j e c t 关联时, 它就开始了个事务并调用了这个b e a n 的e j b l o a d 0 方法。在这个方法中开发者 必须提供从数据库取出正确的数据并把它放在b e a n 中。当容器将要提交一个事 务它首先调用b e a n 的e j b s t r o r e 0 方法。这个方法负责向数据库中回写数据。这 个特性称之为自管理持久性,因为b e a n 方法中的代码提供了这种同步。 当e j b l o a d 0 方法完成时,b e a n 有可能与底层数据库不一致。商业方法的 调用触发了与e j b o b j e c t 关联的b e a n 的分配,然后在事务中执行的c j b l o a d 0 必 须在部署描述符中声明。根据接收到的方法调用请求,f _ j b o b j e c t 和容器一起建 立一个事务上下文。容器分配m b o b j e c t 的b e a n 并调用b e a n 的e j b l o a d 0 方法。 这个方法现在运行在事务上下文中。这个事务上下文传递给数据库,根据部署 描述符中指定的孤立性级别,这个事务锁定数据库中被访问的数据。 只要事务上下文活动,数据库中的数据就一直保持锁定状态。当客户端或 容器提交事务时,容器首先调用b e a n 的e j b s t o r e 0 方法,把b e a n 中的数据回写 到数据库中。 相应的数据库记录在e j b l o a d 0 和e j b s t o r e 0 1 n 保持锁定保证了b e a n :n 数据库 问的同步。其间可以进行不同的商业方法调用。而且,e j b l o a d 0 和e j b s t o r e 0 明 9 武汉理工大学硕士学位论文 确地区分了事务边界,事务中可以进行任何商业方法调用。事务的持续时间由 部署描述符决定,也可能由客户端决定。注意不必使用e j b a c t i v a t e 0 和 e j b p a s s i v a t e 0 方法来执行与数据库间的同步。 容器管理的持久性: 如果部署描述符声明b e a n 使用容器管理的持久性,则不用e j b l o a d o 和 e j b s t o r e 0 来访问数据库。容器会把数据从数据库中导入到b e a n 中,然后调用b e a n 的e j b l o a d 0 方法来完成从数据库中接收数据。 同样地,容器调用b e a n 的e j b s t o r e 0 方法来完成把数据回写到数据库中。这 些方法实际上没有执行任何数据库操作。当开发商用复杂的工具来提供容器管 理持久性时,如自动产生能进行对象一关系映射的实体b e a u 类,规范规定了厂 商必须提供的容器管理实体持久性的最小需求集。 部署描述符可以指定b e a n 的一个p u b l i c 域来实现与数据库列简单映射。容 器使用部署描述符读出b e a n 的这个p u b l i c 域并写到相应的列,或从数据库列中 读出数据写到p u b l i c 域中。容器管理的持久性对e j b 开发者来说是非常好的服 务,且不需对象一关系影射等其他复杂的机制,开发者会发现它比自管理的持久 性更有效率。 2 2 轻量级持久化技术详述 2 2 1h i b e r n a t e 技术概述 h i b e r n a t e 是一个免费的开源j a v a 包,它使得与关系数据库打交道变得十分 轻松,不必考虑如何把它们从复杂的数据库表中取出( 或放回到数据库表中) 。 程序员可以专注于应用程序的对象和功能,而不需要关心如何保存和查询方面 的工作。【2 】 大多数应用程序都需要处理数据。j a v a 应用程序运行时,往往把数据封装 为相互连接的对象网络,需要有一些保存它们的方法。有时候,甚至在编写应 用程序之前,数据就已经存在了,所以需要有读入它们和将其表示为对象的方 法。手动编写代码来执行这些任务不仅单调乏味、易于出错,而且会占用整个 应用程序的很大一部分开发工作量。 优秀的面向对象开发人员厌倦了这种重复性的劳动,他们开始采用通常的 “积极”偷懒做法,即创建工具,使整个过程自动化。对于关系数

温馨提示

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

评论

0/150

提交评论