(机械设计及理论专业论文)j2ee平台上集成struts框架和企业javabean构建多层web系统.pdf_第1页
(机械设计及理论专业论文)j2ee平台上集成struts框架和企业javabean构建多层web系统.pdf_第2页
(机械设计及理论专业论文)j2ee平台上集成struts框架和企业javabean构建多层web系统.pdf_第3页
(机械设计及理论专业论文)j2ee平台上集成struts框架和企业javabean构建多层web系统.pdf_第4页
(机械设计及理论专业论文)j2ee平台上集成struts框架和企业javabean构建多层web系统.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(机械设计及理论专业论文)j2ee平台上集成struts框架和企业javabean构建多层web系统.pdf.pdf 免费下载

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

文档简介

华中科技大学硕士学位论文 摘要 在l m e m e t w e b 日益普及的今天,越来越多的企业应用都采用w e b 技术来开发, 与此同时,j 2 e e 由于其系列开放标准的规范和j a v a 技术在服务器端应用固有的 优势,己经成为w e b 应用的首选开发平台。本文将结合笔者正在开发的变电工区 设备管理系统,来探讨如何在j 2 e e 平台上集成s t r u t s 框架和企业j a v a b e a n 来构建 可重用、可维护和易扩展的企业w e b 应用。 本文首先对j 2 e e 平台、e j b 组件和s t r u t s 框架作了一个简要的概述,接着介绍 了s t r u t s 框架和e j b 集成的目的与策略,然后对本系统的总体结构和组件模型进 行分析,系统遵循j 2 e e 规范所倡导的组件化设计和层次集成的理念,其核心由基 于s g u t s 框架的w e b 层和综合利用多种e j b 设计模式( d e s i g np a t t e m ) 而,1 :发的 业务层所构成,层与层之间有着明确的分工与协作,共同完成系统的功能。在此 之后,本文再结合系统的基本信息和试验管理两个子系统,详细探讨了如何集成 s t r u t s 框架和e j b 组件来构建可重用、可维护和易扩展的企业w e b 应用,该部分着 重对j 2 e e 应用中所存在的w e b 页面的可维护性、w e b 应用的流程控制和e j b 组件 的优化设计与重用这三个主要的难点进行了详细的分析,并提出了基于框架和模 式进行设计的解决方案。文章最后简要介绍了系统的集成和部署,并对相关技术 的发展前景作出了展望。 本文理论和实际相结合,旨在通过对应用框架和设计模式的利用来提高系统 的可重用性、可维护性和易扩展性,既具有较深的理论基础,又有较高的实用价 值。 关键词:j a v a 2 平台企业版w e b 应用s t r u t s 框架企业j a v a b e a n 设训模式 华中科技大学硕士学位论文 a b s t r a c t w i t ht h ed e v e l o p m e n to fi n t e r n e t - - w e b m o r ea n dm o r ee n t e r p r i s ea p p l i c a t i o n si l v e b a s e do n w e b d u r i n g t h i s t i m e ,j 2 e ep l a t f o r m ,o w i n g t oi t s o p e n s t a n d a r d s p e c i f i c a t i o na n d j a v at e c h n o l o g y si n h e r e n ts u p e r o r i t yo nt h es e r v e r s i d e ,h a sb e c o m e t h ec e r t a i nc h o s e nf o r p r o g r a m m i n gs e r v e r s c o m b i n i n gt h ed e v e l o p m e n t o ft h e “p o w e r 哺,o r ka r e ad e v i c e m a n a g e m e n ti n f o r m a t i o ns y s t e m ”t h i s t h e s i sd i s c u s s e sa n d r e s e a r c h e sh o wt oi n t e g r a t es t r u t sf r a m e w o r kw i t he j b ( e n t e r p r i s ej a v a b e a n s ) t o d e s i g na n di m p l e m e n tar e u s a b l e 、m a i n t a i n a b l ea n de x t e n s i b l ee n t e r p r i s ea p p l i c a t i o n b a s e do nj 2 e e p l a t f o r m t h et h e s i sf i r s td e s c r i b e sj 2 e ep l a t f o r r n a n d 、e j b c o m p o n e n t s a n ds t r u t s f r a m e w o r k ,t h e n i n t r o d u c e st h e o b j e c t i v e a n d s t r a t e g y o ft h e i n t e g r a t i o n s t r u t s f r a m e w o r kw i t he j bc o m p o n e n t i nt h et h i r dc h a p t e r , t h ep a p e ra n a l y z e st h es y s t e m s s t r u c t u r ea n dc o m p o n e n t sm o d e l ,t h i ss y s t e me n t i r e l yf o l l o w st h ep r i n c i p l eo fd e s i g n i n g w i t hc o m p o n e n ta n dm u l t i t i e rs t r u c t u r ew h i c hd e f i n e db yj 2 e es p e c i f i c a t i o n t h es y s t e m i sc o m p o s e do faw e bt i e rb u i l d i n gu n d e rt h es t r u t sf r a l i l e w o r ka n dab u s i n e s st i e r w h i c hi sb a s e do nt h ee j b d e s i g n p a t t e r n s t h et w o t i e r sa r eu s e d t o g e t h e rt oa c h i e v et h e s y s t e m f i m c t i o n a f t e r t h a t ,c o m b i n i n g t h e i m p l e m e n t a t i o n o ft h eb a s ei n f o r m a t i o n s u b s y s t e m a n dt h et e s tm a n a g e m e n t s u b s y s t e m t h i st h e s i sd i s c u s s e si nd e t a i lt h a th o w t o c o n t r i b u t ear e u s a b l e 、m a i n t a i n a b l ea n de x t e n s i b l ee n t e r p r i s ea p p l i c a t i o nb yi n t e g r a t i o n s t r u t sf r a m e w o r kw i t he j bc o m p o n e n t a tt h et w oc h a p t e r s ,ig i v ea l le m p h a s i so nt h e m a i n t a i n c eo fw e bp a g e 、t h ec o n t r 0 1f o l wa n dt h eo p t i m i z a t i o nm a dr e u s eo fe j b c o m p o n e n t ,a l lo f t h e s e t h r e ea r et h ei m p o r t a n tc h a l l e n g e si nd e s i g n i n ga n dd e v e l o p i n ga e n t e r p r i s ea p p l i c a t i o n a tt h es a n l et i m et i f f st h e s i sa l s oc o n t r i b u t e sas e r i a l so fb e s t s o l u t i o na b o u tt h o s ep r o b l e m s 1 a s tt h ep a p e rd e s c r i b e st h ei n t e g r a t i o na n dd e p l o y m e n t o f t h e s y s t e ma n dp r o s p e c tt h ej 2 e et e c h n i q u e sd e v e l o p m e n i 。 t h et h e s i sc o m b i n e st h e o r yw i t hp r a c t i c ea l it h et i m ei tf o c u s e so ni m p r o v i n gt h e r e s u e 、m a i n t a i n e n c ea n de x t e n t i o no f t h ee n t e r p r i s ea p p l i c a t i o nb yu s eo f f r a m e w o r km a d e j bd e s i g n p a t t e m s t h u sm a k et h ep a p e rn o to n l yh a st h e o r yb a s eb u ta l s oh a s s u c c e s s f u ip r a c t i c a ls i g n i f i c a n c e k e yw o r d s :j 2 e e ( j a v a t m 2 p l a t f o r m e n t e r p r i s ee d i t i o n ) w e b a p p l i c a t i o n s t r u t sf r a m e w o r k e j b ( e n t e r p r i s ej a v a b e a n s ) d e s i g n p a a e r n 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集 体,均己在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承 担。 学位论文作者签名: 日移劬年妒占 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有 权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本论文属于不保密d ( 请在以上方框内打“”) 学位论文作者签名:专鸟影醪 日期耖日、 华中科技大学硕士学位论文 1 绪论 随着i n t e r n e t - w e b 日益成为主要的信息管理平台,越来越多的企业m i s ( m a n a g e m e m i n f o r m a t i o ns y s t e m ) 系统采用w e b 而构建,w e b 应用将浏览器这一 标准的工具软件作为用户和系统的接口,消除了图形用户界面的开发、安装和维护, 这是它的一个巨大优势;但与此同时,w e b 应用的表示逻辑和业务逻辑都必须在服 务器端实现,这就使得服务器端w e b 应用的开发变得非常困难,如何快速的构建出 性能优良、可维护、易扩展的w e b 应用来满足企业的需求,是应用开发人员面临的 一个重要课题。 1 1 j 2 e e 平台和e j b 组件 1 1 1j 2 e e 平台慨述 j 2 e e ( j a v a 2e n t e r p r i s ee d i t i o n ,j a v a 7 企业版) 平台以j a v a 语言为基础,融合了 多种诸如s e r v l e t 、j s p 和e j b 等优秀的服务器端j a v a 技术,是最适用于企业环境的 w e b 应用架构【”。j 2 e e 提供了一个基于组件( c o m p o n e n t ) 的多层( m u l t i t i e r ) 应用 模型,如图l1 所示: 图1 1 2 e e 基于组件的多层应用模型 该模型将一个复杂的应用划分成四层结构并由相应的组件来实现,其中,w e b 层和业务层是整个系统的核心,分别实现了系统的表示逻辑和业务逻辑。w e b 层中 一 l 华中科技大学硕士学位论文 定义了如s e r v l e t j s p ( j a v as e r v e r p a g e ) 等组件,业务层则主要由e 饵( e n t e r p r i s e j a v a b e a n s ) 组件来构建,通过层与层、组件与组件之间的交互协作来完成整个系统 的功能。这种基于组件的多层结构给w e b 应用的设计、开发带来了很大的灵活性, 也是j 2 e e 平台在服务器端应用取得巨大成功的关键所在。 1 1 2 j 2 e e 基于容器( c o n t a i n e r ) 的组件模型 j 2 e e 的多层应用模型是基于组件的,其w e b 层和业务层分别要由s e r v e l t 、j s p 和e j b 等组件来实现,组件是可重用的有着良好接口( i n t e r f a c e ) 定义的可定制、 可部署的程序单元,组件的可重用性是系统可重用的基础,而组件的可定制、可部 署性又使得同一个j 2 e e 应用可以通过不同的部署策略而获得不同的行为,从而拥 有良好的可伸缩性和可扩展性。同时,j 2 e e 的组件是运行在容器之中的,容器是组 件的运行时( m n t i m e ) 环境,它是j 2 e e 应用的基础,也是j 2 e e 应用的核心,容器 不但管理着组件的从创建、配置、调用乃至销毁的全生命周期,丽且还为组件提供了 一系列的诸如安全管理、事务控制、数据持续性等系统级服务。这种“组件一容器” 模型事实上把一个j 2 e e 应用划分成两个部分,一是由应用开发人员在组件中所实 现的系统的表示逻辑和业务逻辑,二是由容器为组件提供的服务,这两者紧密配合, 共同构成一个完整的应用,如图12 所示: 图12j 2 e e 的组件一容器模型 j 2 e e 的“组件一容器”模型正是依托于容器为组件提供的系统级服务基础之上, 彻底地把开发人员从底层复杂的编码中解放出来,而只需把精力集中在实现系统的 表示逻辑和业务逻辑上,显著的简化了系统的开发。同时,j 2 e e 中的s e r v l e t 、j s p 和e j b 等组件的规范又是标准、开放的,并得到了众多中间件厂商的支持,这些组 _ 一 2 华中科技大学硕士学位论文 件可以部署到任何遵循j 2 e e 规范的服务器平台之上,使得j 2 e e 应用具有良好的可 移植性。 1 1 3e j b 组件技术 e j b 是j 2 e e 平台上服务器端的j a v a 组件体系结构,用来开发安全、事务性的、 可伸缩的企业应用,它将j a v a 组件的应用从客户机域扩展到了服务器域,使j a v a 技术发展成为一种强健的、可伸缩的环境,能够支持以任务为关键的企业应用,直 接导致了j 2 e e 平台的诞生1 2 1 。e j b 依托于其“组件一容器”模型来简化企业应用的 开发,开发人员只需把精力集中在应用的业务逻辑上,应用所需的安全、事务、数 据持续性等复杂的中间件服务则由e j b 容器来提供,显著的降低了服务器端企业应 用的开发难度。作为j 2 e e 平台的基石,e b 自1 9 9 8 年3 月阏世以来,一直是企业 应用领域所关注的焦点,经过近六年的发展,它己经和微软的d c o m 、o m g 的 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 t h i t e c t u r e , 公共对象请求代理体系结构) 一 起,并称为当今三大主流的服务器端组件体系结构。 e j b 的体系结构非常复杂,它可以是分布式的,也可以是非分布式的。在e j b 20 规范以前它只能作为一种分布式的组件,即使是部署在同一个j a v a v m ( j a v a v i r t u a l m a c h i n e ,j a v a 虚拟机) 中,e j b 组件之间也只能通过r e m o t e 接口来交互,而对r e m o t e 接口的远程方法调用需要显著的运行对开销,且效率极低。而事实上真正的分布式 应用并不多,往往都是e j b 使用r e m o t e 接口,却和其客户端部署在运行于同一个 j a v a v m 中的应用服务器中,此时的远程方法调用完全没有必要,故而e y b 2 0 规范 引入了崭新的l o c a l 接口,使得同一个j v m 中的客户( 包括w e b 客户) 可以通过本地、 而非远程方法调用来和e t b 交互,极大的提高了e j b 组件的性能,这在e j b 组件 技术的发展史上是一个革命性的飞跃【3 1 。当然,使用l o c a l 接口的e j b 不再是分布 式组件,但我们照常可以获得e j b 容器提供的安全、事务、数据持续性等功能支持, 而这才是e j b 组件功能强大的真正所在。 1 2m v c 设计模式和s t r u t s 框架 1 2 1m v c 设计模式 m v c ( m o d e l - v i e w - c o n t r o l l e r , 模型一视图一控制器) 是一种在交互式应用中广为使 3 华中科技大学硕士学位论文 用的设计模式,它将一个复杂的应用按功毙划分为三令不同的模块: 模型( m o d e l ) :代表系统的业务逻辑和数据,是整个系统的核心。 视图( e w ) :将模型的内容以可视化的方式表现给用户,还负责将用户的请 求发送到控制器。 控制器r ( c o n t r o l l e r ) :是视图与模型联系的中介,它把用户和视图的交互映射 到模型的动作,并将模型动作的结果转发给相应的视图以反馈绘用户。 j 2 e e 应用是一个典型的请求处理响应式的交互性应用,使用m v c 设计模式, 可以把j 2 e e 应用中的核心数据、数据的处理功能与使用这些功能的显示控制逻辑 相分离,这种分离不但使得多视图共享同样的数据模型容易实现,也降低了系统内 各模块之间的偶合;而j 2 e e 中s e r v l e r 、j s p 、e j b 这三种主要的组件也特别适合于 作为c o n t r o l l e r 、v i e w 和m o d e l 的实现,故而m v c 也就成为j 2 e e 蓝图( j 2 e e b l u e p r i n t s ) 所极力推荐的设计模式,如图l3 所示: l : 。 f 七一 。7 卅 s e r v l e t 1 一【s o s s i o 椰e a n 卦 t 客户端 j “留1 i “v 憎i e w ”【 i e n t i t y b e a n 1 l ,i l 一q _ e b 容嚣e j b 容器 j 2 e e 应用服务器 1 2 。2s t r u t s 框架 图13j 2 e e 应用中的m v c 设计模式 框架是软件开发过程中经过适度抽象的可重用、可扩充的基础性架构,它将应 用中的一些通用功能集成在一起,通过对这些通用功能的定制和扩充来支持应用的 快速开发。s t r u t s 就是这样一个源代码开放的w e b 应用框架,旨在通过对m v c 设计模 式的应用给j 2 e e w e b 层的开发提供一个易维护、易扩展的基础性架构,来简化应用 的开发【4 】,其核心是一个由一系列基于s e r v l e t 、j a v a b e a n 和儿等技术的相关组件而 构成的、可定制、可扩充、功能强大的控制器组件,该组件将w e b 应用中的诸如请求 的接收和转发、视图的导航与选择等逻辑性功能集成在一起,通过适当的定制和扩 4 华中科技大学硕士学位论文 充,它可以作为w e b 应用的前端而为整个应用提供完善的请求处理和流程控制。图1 4 是利用s t r u t s 框架来开发特定应用的示意图: 图14 利用s t r u t s 框架开发特定应用 当然,s t r u t s 只是w e b 层的开发框架,并不涉及到e j b 组件技术,但可经由一 定的策略来将它和e j b 集成在起,从而构成一个完整的j 2 e em v c 应用,本文第 二章再对此进行详细的阐述。 i 3系统研究的目的及所做的主要工作 1 3 1 系统研究的目的 本系统是在先前为新会市电力工业局所设计的变电设备管理系统基础上采用 j 2 e e 平台重新开发的。先前的系统是用设计的一个典型的c s ( c l i e n t s e r v e r , 客户端一服务器) 式的应用,系统的表示逻辑和业务逻辑都要在各个客户端独立运 行,服务器只是一个原始数据的存储载体,其安装、维护成本太高,己无法适应企 业应用的需要。故而笔者在原有系统的功能基础之上,采用j 2 e e 平台将其重新设 计为一个b s ( b r o w s e f f s e r v e r , 浏览器服务器) 式的w e b 应用,利用浏览器这一 标准的工具软件作为用户和系统的接口,应用的表示逻辑和业务逻辑都在服务器端 实现,消除了应用在客户端的安装与维护,同时,依托于j 2 e e 应用服务器的功能 支持,系统的性能更加稳定、可靠,这对原有系统是一个有力的改进。 在开发过程中,将s t r u t s 框架这一j 2 e e 平台上应用最为广泛的w e b 层基础性 架构和e j b 组件技术集成起来,同时采用了多种j 2 e e 的相关设计模式,以力求系 华中科技大学硕士学位论文 统的性能优良、易于维护和扩展。在系统实现时还提出了一种基于j a v a 反射机制和 1 ( i n t e r f a c e ) 技术的、由s e s s i o n b e a n 对e n t i t y b e a n 进行动态封装的策略,并已在 系统中得到了成功的运用,这都为在j 2 e e 平台上构建企业w e b 应用作出了有益的 探索。 1 3 2 系统开发中所做的主要工作 f 1 1 设计系统的功能模块 经过对原有系统的需求文档进行仔细的分析,并多方权衡和取舍,将本系统分 为基本信息、试验管理、维修管理、继电保护和运行管理共五大模块,整个系统呈 模块化结构,系统功能明确,具有良好的可操作性和可扩展性。 ( 2 ) 综合利用多种e j b 设计模式实现了业务层 业务层封装了系统的业务逻辑和核心数据,是整个系统的核心,w e b 层只有通 过它才能和后端数据库进行交互。在系统功能模块分析的基础上,将业务层e j b 组 件划分为逻辑上相互独立的两个部分:业务逻辑组件和数据逻辑组件,分别采用 s e s s i o n b e a n 和e m i t y b e a n 来实现,并综合利用了多种e i b 的设计模式,使得业务 层易于伸缩,并能够有效的利用服务器端和网络资源。 f 3 ) 基于s t r u t s 框架实现了w e b 层组件 w e b 层组件主要完成系统的表示逻辑和流程控制,系统的w e b 层是基于s t r u t s 框架而开发,其流程控制、请求处理等逻辑性操作和用户的表示严格分离,易于理 解和维护,在j s p w e b 页面的设计中又采用了复合视图、视图助手等诸多设计模式, 使得w e b 页面具有良好的可读性和可维护性。 f 4 ) 系统集成和部署 w e b 层和业务层设计完成后,要将它们分别打包成独立的模块,然后再集成为 一个完整的j 2 e e 应用,并部署到应用服务器上。 ( 5 1 调试系统 完成系统的部署以后,还要对整个系统进行调试,以纠正系统中隐藏的错误和 漏洞,使系统能稳定、可靠的运行。 6 华中科技大学硕士学位论文 2 s t r u t s 框架和e j b 集成的目的和策略 e j b 是j 2 e e 平台的商业组件模型,它通过简单的定制和部署就可以从容器中 获得良好的安全、事务、数据持续性等功能支持,而无须进行繁琐又难以把握的底 层编码,这使得它特别适用于在业务层中封装应用的业务逻辑和数据p i 。而s t r u t s 框架又是可重用的w e b 层基础性架构,它对c o n t r o l l e r 和v i e w 组件的功能划分使 得由其所开发的w e b 层极易维护。利用e j b 组件实现业务层,基于s t r u t s 框架设计 w e b 层,然后再将两者集成在一起,而构成一个完整的应用,这对j 2 e em v c 应用 的开发来说,是一个非常理想的解决方案,本系统正是基于这样一种设计理念而实 现的。但s t r u t s 框架只是w e b 层的开发技术,它并没有提供和e j b 集成的通用方案, 而需要开发人员自己去实现,这里笔者将结合本系统具体的开发实践,来探讨s t r u t s 框架和e j b 组件的集成策略。 2 1s t r u t s 框架和e j b 集成的目的与意义 s t r u t s 框架是经过精心设计、并为实际应用所证实的w e b 层可重用、可维护的 解决方案,通过适当的定制和扩充,就可以快速的实现特定应用的c o n t r o l l e r 和v i e w 组件。在j 2 e e m v c 应用中利用s t r u t s 框架可以带来如下一些好处: s t r u t s 框架是经过精心设计的,其控制器组件综合利用了多种j 2 e e 的设计 模式,它所提供的解决方案已经得到多个应用项目的证实,是成熟和稳定的。 s t r u t s 框架集成了w e b 层开发所需的多种通用功能,可以通过定制和扩充来 实现具体的应用。 s t r u t s 框架的c o n t r o l l e r 组件可以有效的将w e b 层中的请求处理、流程控制 和页面的表示相分离,提高了w e b 层的可维护性与j s p 页面的可读性。 s t r u t s 框架是可重用的、源代码开放的基础性架构,利用它可以显著的缩短 应用的开发周期、降低开发的成本和投资,而且并不存在任何的侵权问题。 e j b 则是j 2 e e 平台安全的、事务性的、可伸缩性的商业组件模型,特别适合 于封装应用的业务逻辑和核心数据并作为应用的m o d e l 组件,作为当今主流的服务 器端组件体系结构,它具有以下三大优点: 它得到了业界的广泛支持和认可。e j b 是s u n 公司联合m m 、b e a 等众多 中间件厂商巨头共同制定的,其目标是要成为企业w e b 应用的标准组件体 7 华中科技大学硕士学位论文 系结构,尽管闻世还不到六年,但它己经在服务器端w e b 应用中确定了自 己明显的优势地位【6 1 。 o 它能够快速的开发出复杂的应用。在e j b 容器的支持下,应用开发人员只 需把精力集中在业务逻辑的开发上,系统所需的诸如安全、事务、数据持 续性等复杂的中间件服务则由容器去提供,降低了开发的难度。 它具有良好的可移植性和互操作性。e j b 是j a v a 技术在服务器端的应用, 具有j a v a 语言固有的平台无关性,而且e j b 规范也已经得到了广泛的支持 和认可,该规范对e i b 的“容器一组件”模型作出了严格的定义和说明, 使得e j b 组件可以在一个统一的平台( j 2 e e ) 和a p i ( i a v a xe i b ) 下开发、 并可平滑的移植到不同的e j b 服务器平台之上。 集成s t r u t s 框架和e j b 组件,可以综合利用两者的优势,从而高效、快速的构 建出一个可维护、易扩展的j 2 e em v c 应用。 2 2 s t r u t s 框架和e j b 集成的策略 r 2 e e 应用的开发往往都是根据系统所要实现的功能和己设计好的数据库结构, 先设计业务层,再设计w e b 层,由w e b 层调用业务层e j b 组件的服务来实现他们 之间的集成。w e b 层对e j b 组件的调用通常都是通过业务层中的业务代理 ( b u s i n e g s d e i e g a t e ) 和数据传输对象( d a t at r a n s f e ro b j e c t ,d t o ) 来完成。业务代理是 e j b 在w e b 层的功能代理,它将e j b 组件为w e b 层提供的服务封装在一个普通的 j a v a 类中,w e b 层通过它来间接和e j b 交互,从而将w e b 层和e j b 隔离开来,降 低了系统中层与层之间的耦台。数据传输对象封装了w e b 层和业务层在一个工作流 程中所要交换的全部数据,避免了对e 毋不必要的细粒度方法调用。s t r u t s 框架是 w e b 层的基础性架构。它也必须通过这两类组件来和e j b 交互,但和普通由开发人 员独立设计的w e b 层不同,s t r u t s 框架内置着一个可以定制和扩充的c o n t r o l l e r 组件, 该组件被设计为整个w e b 应用的前端控制器,由它来代替w e b 层和e j b 进行交互, 故而s t r u t s 框架和e j b 的集成必须通过其c o n t r o l l e r 组件和e j b 的交互来实现,如 图2 1 所示: 8 华中科技大学硕士学位论文 j 2 e e 应用服务器 b 容饕、 , e j b 容罂 、 s t r u t s 框槊的c o n t r o l i a r 组件业务层 , a c t i o n s e r v e tha c t i 。n l - 一 lb u b i n d e l e g a t e 馨 篇? 沸厂i i ;翮= 高 l - = 了r _ _ 、 、每每 梦 、。 j s ,l _ _ 了 图2is t r u t s 框架的c o n t r o l l e r 组件和e j b 的交互 2 2 1 a c t i o n 和b u s i n 髓s d e l e g a t e 的交互 图2 1 清楚的显示,s t r u t s 框架和e j b 的集成首先要通过其a c t i o n 组件和业务 代理b u s i n e s s d e l e g a t 的交互来完成,a c t i o n 将转发过来的请求发送到 b u s i n e s s d e l e g a t e 由它再将该请求映射到e j b 组件的具体操作。为此,本系统的 a c t i o n 组件在实现时,是将和其对应的b u s i n e s s d e l e a g e 作为自己的一个固定实例变 量来完成这种映射的,由于a c t i o n s e r v l e t 是以一个a c t i o n 实例的多个线程来处理所 有对该a c t i o n 的请求,为了a c t i o n 的线程安全,其类中通常不应包含实例变量, 但将特定的b u s i n e s s d e l e g a t e 实例作为a c t i o n 的固定变量却是线程安全的,用户对 a c t i o n 的任何请求都不能对该b u s i n e s s d e l e g a t e 变量进行任何的更改,这有点类似 于无状态s e s s i o n b e a n 对e n t i t y b e a n 的封装。以下是资产卡片管理子系统中 c a r d a c t i o n 和c a r d d e l e g a t e 交互的示例代码: p u b l i cc l a s sc a r d a c t i o n e x t e n d s d i s p a t c h a c t i o n c a r d d d e g a t ec a r d d e l e g a t e = n e wc a r d d e l e g a t e ;将c a r d d e l e g a t e 作为实例变量 p u b l i ca c t i o n f o r w a r dq u e r y c a r d b y o e v i c e n o l ( a c t i o n m a p p i n gm a p p i n g ,a c t i o n f o r m f o r m ,h t t p s e r v l e t r e q u e s tr e q u e s t ,h t t p s e r v l e t r e s p o n s er e s p o n s e ) s t r i n gd e v i c e n o - - r e q u e s t g e t p a r a m e t e r c d e v i c e n o ”) ; c a r d d t o c a r d d t o = c a r d d e l e g a t eq u e r y b y d e v i c e n o ( d e v i c e n o ) ; 对d t 0 进行处理 9 华中科技大学硕士学位论文 f 。协m ( a c t i o n m a p p i n gf i a d f o r w a f d ( ”q u e r y ) ) i 、 j 以下省略 图2 2 是c a x d a c f i o n 经由c a r d d e l e g a t e 来和e j b 组件交互的顺序图; ;冀一赢磊蠹j 誓jf i :i j i ;i ;蔷i 丽二i j li 百:面i :蠢j i 二 : ;l ;| 、。 、一。f - - 。一。、。一、。1 。一一。一 _ 黧= i 亲f x l 4 。重 i 罄嘎7 掣竺! 叩。对量。 8 : i f 用 。 i 爿7 :翎逗: l1i i i 。8 : 返回ej b lo c a l0 b j 。c t 对量 。,1 :譬一j: r 。9 :调用 t f ;卜_ l 卜剖 l i10 :返回d t 0 i l i 0 1 j j 一曼哩! ! 哩j ( “。: l 、 + l 图2 2 c a r d a c t i o n 和c a r d d e l e g a t e 交互的顺序图 2 , 2 2a c t i o n f o r m 和数据传输对象d t o 的转换 数据传输对象d t o 可以避免w e b 层对业务层不必要的细粒度方法调用,w e b 层发送给e t b 组件的和e t b 组件返回给它的都应该是一个d t o 对象,因此,作为 客户层与和业务层交互的中介,一方面,s t r u t s 框架要接收客户层以请求参数形式 提交给它的数据,再把它们封装为e j b 能够接受的d t o 对象i 另一方面,它也要 接收作为业务层方法调用结果的、e j b 组件返回给它的d t o 对象,并把它转换成 j s p 页面易于使用的对象( 如j a v a b e a n ) 以反馈给客户。在s t r u t s 框架中,a c t i o n f o r m 被用来封装客户端的请求数据,也是j s p 页面所使用的标准j a v a b e a n ,故而为了达 成s t r u t s 框架和e y b 的集成,必须在a c t i o n f o r m 和d t o 之间提供一种灵活的转换 机制,以使得客户层能够通过s t r u t s 框架和业务层进行必要的数据交换。 a c t i o n f o r m 和d t o 不同,d t o 仅用作w e b 层和e j b 数据交互的载体,而 a c t i o n f o r m 却是直接面向客户的,由它来封装客户的请求参数,它必须继承于 o r g a p a c h es t r u t s a c t i o na c t i o n f 6 r m ,因为o r g a p a c h e s t r u t s a c t i o n ,a c t i o n f o r m 的设计 使得它易于和s t r u t s 框架的其它组件进行交互,但又不能直接将a c t i o n f o r m 用作 d t o ,这样会使得e j b 组件被束缚在w e b 层所使用的a p i 之a 二( o r ga p a c h e s t r u t s 1 0 甄| | 丽 震一 嘲量 蕊_l一, 霹 | 华中科技大学硕士学位论文 a c t i o n a c t i o n f o r n i ) ,增加了业务层和w e b 层之间的耦合。d t o 是e j b 组件在设计 时就确定了的,w e b 层不能对其进行更改,所以只能在a c t i o n f o r m 中提供它和d t o 相互转换的机制,本系统在设计a c f i o n f o r m 时,是为其设计了两个粗粒度的 s e t t e r g e t t e r 方法,来完成它和d t o 的转换,g e t t e r 方法的范例代码如下: p u b f i cc a r d d t 0g e t c a r d d t 0 0 ( , c a r d d t oc a r d d t o = n e w c a r d d t 0 0 ; c a r d d t o s e t d e v i c e n o ( t h i s d e v i c e n o ) ; c a r d d t 0 s e t d e v i c e c o d e ( t h i s d e v i c e e o d e ) ; r e t u r nc a r d d t o ; ) 由以上类似的两个s e t e r v g e t t e r 方法,c a r d f o r m 和c a r d d t o 对象得以顺利转换, 如图2 f 3 所示: 瓴 o :j 黪d e v i c e n o :s t r i n g 一 d e v t c e c o d e :s t r i n g 6 移 getdeviceno():icstlrng:st。tin):voidtdevfcenod e v e n os t r i n g ) v o i 董 钒e(i c : 奄i g e t d e v i c e c o de _ 0 ;s i r i n g _ 曩 每s e ,t d 绺e v i e c b d e ( d e v i c e g _ o d e 薯一s 。r i _ n g - ) :v o i “ 啼鼬t b 们a d d t o ( c a r d d t o 矗c a 蔓d d t o ) :v o i d 自 g e t c a r d d t 0o 一:j c a r d d t o 。一。i _ :一 图2 3 c a r d a c t i o n f o r m 与数据传输对象c a r d d t o 的转换 2 2 3s t r u t s 框架与e j b 集成的组件交互模型 以上介绍了本系统中s t r u t s 框架和e j b 组件集成时所采取的策略,这里可以概 述如下: 1 由a c t i o n 和业务代理b u s i n e s s d e l e g a t e 进行交互来启动e j b 组件的操作。 2 在a c t i o n f o r m 中设计两个粗粒度的g e t t e r s e t t e r 方法来完成和d t o 的转换。 如图2 4 是系统资产卡片管理子模块中s t r u t s 框架和e j b 集成的顺序图: 1 1 华中科技大学硕士学位论文 a c t i c “e r v l e c i - c a r 蛆c t i m :;( k d a c l i 砸f b m l ;c a 娴馐护睡r d d e 】e 曲ji i c a r d 5 e s s i 硅i 盘如“c | _ r d ) t o 锄晦j 。 , 1 二i i 一:l ! 婴匪 i i _ 二虫衅二m j g 蝉受! 一j :l :调用 : : t 塑

温馨提示

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

评论

0/150

提交评论