EJB的软件设计模式解析.pdf

上传人:asd****56 文档编号:69684571 上传时间:2023-01-07 格式:PDF 页数:8 大小:149.24KB
返回 下载 相关 举报
EJB的软件设计模式解析.pdf_第1页
第1页 / 共8页
EJB的软件设计模式解析.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《EJB的软件设计模式解析.pdf》由会员分享,可在线阅读,更多相关《EJB的软件设计模式解析.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、EJB 的软件设计模式解析 李晓华 河北省城乡规划设计研究院,石家庄市 050021 摘 要摘 要 本文从软件设计模式的角度研究了 EJB 的设计与实现机制。其中,用代理设计模式、适配器设计模式、工厂设计模式对 EJB 的基础部分RMI 进行了解析,用组合设计模式对 EJB的另一基础部分JNDI 进行了解析,用观察者设计模式对消息驱动 EJB 的实现机制进行了分析。本文还论述了接口在 EJB 中的重要作用。关键词关键词 EJB,设计模式,接口,构件.1.引言 1.引言 设计模式是人们在软件开发过程中积累的软件设计经验,一种软件设计经验是有关某一类软件设计问题的通用解决方案,此解决方案可能是类、

2、类间关系的具体定义,也可能是一种比较抽象的软件设计思想。设计模式的最大特点是支持复用,设计模式经常被用于构件的设计与实现,即用设计模式所体现的软件设计思想来定义构件接口、构件所封装的相互关联的类、类间关系,以支持构件的可复用性、访问的安全性、可分布性等。RMI 和 JNDI 是 EJB 的基础,RMI 和 JNDI 的设计与实现用到了设计模式,设计模式中又大量地用到了接口。2.EJB 的 RMI 的设计模式解析 2.EJB 的 RMI 的设计模式解析 EJB 的 RMI 规则主要有两点:(1)被远程调用(远程实现)的方法必须抛出RemoteException。(2)被远程调用(远程实现)的方法

3、的任何参数和返回值的类型必须是以下三种类型之一:(a)简单的 JAVA 数据类型。如,字符串、整型、布尔型、实数型。(b)继承或实现了 java.rmi.Remote 接口。(c)继承或实现了 java.io.Serializable 接口。RMI 是 EJB 的基础,而 EJB 是 J2EE 的核心部分。EJB 的 RMI 调用过程如图 1 所示。图 1中 Stub 的作用有三点:(1)作为远程被调用的 EJB 对象的代理,原因就是 Stub 置换了 1 http:/ EJBHome 接口对象或 EJBRemote 接口对象,而 EJBHome 接口对象和 EJBRemote 接口对象是远程

4、被调用的 EJB 对象的本地代理。(2)建立与远程 EJB 对象的握手连接。(3)序列化要传送到远程EJB服务器的EJB客户端数据和反序列化从远程EJB服务器传送到EJB客户端的数据。序列化的含义就是把要传送的数据编码成适于在网上传输的网络字节流,如果要传送的数据是对象,原则是只传对象属性,不传对象方法。如果对象属性还是对象,按此原则分解下去,直到属性均为简单的 Java 数据类型,如,字符串、整型、布尔型、实数型。待已编码的数据通过网络传送到接收方后,接收方对所接收到的编码数据进行解码,即把网络字节流变换成接收方系统的数据表示格式,然后,在接收方重构发送方想通过网络要发送的对象,这样,接收方

5、重构的对象就是发送方要发送对象的一个远程副本。接收方可以使用这个副本对象与发送方协作实现分布式计算。图 1 中 Skeleton 的作用有三点:(1)根据所收到的 EJB 客户端的请求信息,定位响应EJB 客户端请求的 EJB 服务对象。(2)序列化要发送到 EJB 客户端的请求响应结果,反序列化来自 EJB 客户端的请求信息。(3)适配器,因为 EJB 客户端欲远程调用的方法可能与远程EJB 服务对象所提供的方法不一致,这时 Skeleton 就负责把 EJB 客户端的调用适配至 EJB服务对象所提供的具体服务。图 1:EJB 的 RMI 的 UML 类示意图 在实体 EJB 和会话 EJB

6、 的设计和实现中用到了“代理”、“适配器”、“工厂”设计模式,其类示意图如图 2 至图 4 所示。2 http:/ http:/ 图 2:EJB 中的代理模式的 UML 类示意图 在图 2 中,EJB 的 BeanHome 和 EJB 的 BeanRemote 为 EJB 的 BeanClass 的远程代理,EJB客户端通过本地的 BeanHome 和 BeanRemote 接口访问远程的 BeanClass。图 3:EJB 中的适配器模式的 UML 类示意图 在图 3 中,Skeleton 负责把 EJB 客户端的调用适配至 EJB 服务对象所提供的服务-实体 EJB 和会话 EJB 实例的

7、创建逻辑、企业逻辑和实体 EJB 实例的查询逻辑。3 图 4:EJB 中的工厂模式的 UML 类示意图 在图 4 中,BeanHome 是生产 BeanRemote 实例和 BeanClass 实例的工厂,EJB 客户端通过 JNDI 机制获得 EJB 的 BeanHome 接口实例,EJB 客户端使用 BeanHome 接口实例的生产逻辑(实体 EJB 实例的创建和查询逻辑,会话 EJB 实例的创建逻辑)在远程 EJB 服务器上生成有效的 EJB 的 BeanClass 服务对象实例和 BeanRemote 接口实例,并把 BeanRemote 接口实例通过网络传送到 EJB 客户端,EJB

8、 客户端通过调用 BeanRemote 接口实例中的企业逻辑代理来调用远程 EJB 服务器上 BeanRemote 实例所对应的 BeanClass 实例中的真正的企业逻辑。3.JNDI 的设计模式解析 3.JNDI 的设计模式解析 JNDI 与 RMI 一起构成了 EJB 的基础,JNDI 是一个公共资源库,可以供 J2EE 域中的 Web Server 和 EJB Server 使用。向 JNDI Server 注册资源有三种方式:(1)缺省注册,即在Application Server 启动过程中默认创建一些资源并向 JNDI Server 注册。(2)使用Application Ser

9、ver 控制台创建资源并向 JNDI Server 注册资源。(3)部署 EJB 的过程中,创建 EJB 实例并向 JNDI Server 注册。(4)Web 程序和 EJB 程序在运行过程中动态创建资源并向 JNDI Server 注册资源。(1)、(2)、(3)中创建、注册的资源是静态资源,即资源被创建并注册后,只要 Application Server 启动了,资源就有效;(4)中创建注册的资源是动态资源,即只有创建并注册资源的应用程序运行时资源才有效。JNDI 负责公共资源的注册、查找和管理工作。可向 JNDI 注册的内容很丰富,如:EJB组件,JMS 连接工厂、数据库连接、事务管理对

10、象等。J2EE 程序可用资源名称从 JNDI 中查 4 http:/ 找所要使用的资源对象,找到后就可使用资源,待程序不再使用资源时,就把资源对象归还给 JNDI,以供其他 J2EE 程序使用 JNDI 的共享资源,JNDI 的有效作用范围是整个 J2EE 域。JNDI 的设计与实现应用到了组合设计模式,JNDI 用组合设计模式思想来组织和管理J2EE 公共资源,其示意类图如图 5 所示。图 5:JNDI 的组合设计模式的 UML 类示意图 JNDI 的组合设计模式的 UML 对象示意图更直观一些,如图 6 所示的树型结构。图 6:JNDI 的组合设计模式的 UML 对象示意图 5 http:

11、/ 4.消息驱动 EJB 的设计模式解析 4.消息驱动 EJB 的设计模式解析 消息驱动 EJB 的工作原理用到了观察者设计模式,其中,JMS 服务器充当了主题中心的角色,是一个消息中转站,用于从消息生产者接收消息,储存消息,适当时候再把消息发送给对消息感兴趣的消息消费者;消息驱动 EJB(MDB)充当了观察者-消息消费者的角色,他向 JMS 注册自己所感兴趣的消息,并异步接收和处理来自 JMS 的消息;消息生产者 Mproducer产生并异步向 JMS 发送消息。消息生产者和消息驱动 EJB 的关系是很松散的,他们两者彼此不可见,即消息生产者产生的消息由谁来处理,消息生产者是不知道的;消息消

12、费者-消息驱动 EJB 所处理的消息是由谁产生的,消息驱动 EJB 也不知道。消息的产生、发送、存储、接受、处理完全是按异步方式进行的,而且,消息还可以在 JMS Server 端永久存储,如果因为某种原因,JMS Server 中的消息还没来得急发送出去,系统就关闭或停止了,那么当系统重新恢复正常运行后,JMS Server 可以把以前还没发送出去的消息从外存中提取出来,发送给消息消费者,这在某种程度上提高了 J2EE 程序的健壮性。消息驱动 EJB 用到的观察者设计模式的类示意图如图 7 所示。图 7:消息驱动 EJB 应用到的观察者设计模式的 UML 类示意图 5.接口在 EJB 中的作

13、用解析 5.接口在 EJB 中的作用解析 (1)J2EE 程序在访问 EJB 构件时,直接访问的是 EJB 的 Home 接口或 Remote 接口,而不是 EJB 的具体实现,EJB 的 Home 接口或 Remote 接口充当了 EJB 实现的代理角色。只要 EJB 6 http:/ 构件的 Home 接口和 Remote 接口保持不变,不论 EJB 构件的具体实现如何变化,访问 EJB构件的 J2EE 应用程序不用修改就可以访问 EJB 构件的新的实现功能了,这使得 J2EE 应用程序的扩展、维护变得很灵活和高效。(2)EJB 构件的接口部分和实现部分可以分布于不同的 JVM 中,J2E

14、E 客户端程序直接访问的是 EJB 构件的接口,借助于 RMI 机制而间接地访问远程的 EJB 构件实现,从而实现了分布式计算。(3)开发 J2EE 应用程序时,在源代码级做到访问 EJB 构件的接口就可以了,而不用考虑构件内部具体是如何实现的,J2EE 应用程序只是在运行时才绑定到构件的具体实现,这样就使开发时的绑定推迟到了运行时的绑定,从而使得J2EE应用程序与EJB构件的开发工作可以分开独立完成,这在一定程度上缓解了程序的开发难度。(4)软件工程所涉及到的 23 个设计模式,几乎每一个设计模式都用到了接口。RMI 和JNDI 机制是借助于设计模式的,RMI 和 JNDI 是 EJB 的基

15、础,EJB 是 J2EE 的核心,所以,没有接口就没有设计模式,没有设计模式就没有 RMI 和 JNDI,没有 RMI 和 JNDI 就没有 EJB,没有 EJB 就没有 J2EE。6.结论 6.结论 接口是设计模式的基础,设计模式是 RMI 和 JNDI 的基础,RMI 和 JNDI 是 EJB 的基础,EJB 是 J2EE 的核心部分。借助于设计模式思想和理念,来解剖 EJB 的设计和实现机制,可以对 EJB 技术有更清晰、更透彻的理解,从而可以用 EJB 技术构建出能很好地支持复用性、安全性、分布性的系统。参考文献 1 Erich Gamma、Richard Helm、Ralph Joh

16、nson、John Vlissides 著,DesignPatterns,北京:机械工业出版社,2002 年 3 月,139 页141 页 2 Markus Volter、Alexander Schmid、Eberhard Wolff 著,Server Component Patterns-Component Infrastructures Illustrated with EJB,北京:机械工业出版社,2004 年 1 月,134 页135 页、145 页150 页 3 刘特编著,J2EE EJB 应用编程实例,北京:清华大学出版社,2003 年 9 月,130 页137 页 4 Jim A

17、rlow、Ila Neustadt 著,UML and the Unified ProcessPractical Object Oriented Analysis&Design,北京:机械工业出版社,2003 年 2 月,185 页188 页 7 http:/ http:/ PARSING EJB WITH SOFTWARE DESIGN PATTERNS LI XIAOHUA Urban and Rural Planning&Designing Institute of Hebei Province,Shijiazhuang 050021 Abstract This thesis searc

18、hes the design and implement mechanism of EJB from the perspective of software design pattern.It includes,with proxy design pattern,adapter design pattern and factory design pattern to parse RMI a part of basis of EJB,with composite design pattern to parse JNDI another part of basis of EJB,with obse

19、rver design pattern to analyze the implement mechanism of message driven bean.The thesis also discusses the importance of interface for EJB.Keywords:EJB,design pattern,interface,component.作者简介:作者简介:李晓华,男,39 岁,1988 年毕业于天津大学应用数学专业,获理学士学位。现职河北省城乡规划设计研究院,专业技术职务为计算机应用高级工程师。2002 年 10 月参加了全国工程硕士统一入学考试,并被天津大学录取为软件工程硕士研究生。我有较好的数学基础抽象思维能力,对软件分析与设计、编程有着很好的理解,有较好的学习新知识、新技术的能力。8

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 财经金融

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁