首页>参考读物>计算机科学与技术>软件与程序设计

EJB设计模式
作者 : (美)Floyd Marinescu
译者 : 饶若南 陈昊鹏 张保稳
出版日期 : 2004-01-01
ISBN : 7-111-13032-4
定价 : 29.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 205
开本 : 16开
原书名 : EJB Design Patterns: Advanced Patterns, Processes, and Idioms
原出版社: John Wiley & Sons
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书作者是世界上EJB设计模式领域内的卓越专家,他领导着EJB设计模式项目。本书不仅从理论上对设计模式在EJB上的应用进行了深入的探讨,而且通过实例展示了EJB设计模式的魅力。本书提出的模式都可以应用于实际项目中。阅读本书可以极大地拓展开发人员的思路,大幅度地提高开发人员构建应用系统的水平,提高代码的重用性,从而提高代码的质量。本书适合有一定经验的应用开发人员参考。
  "EJB设计的任务宏大而艰深,Floyd Marinescu以优雅而简洁的方式深刻而精辟地阐述了这个主
题。我向所有EJB开发人员推荐本书。”  --Richard Monson-Haefel
  《Enterprise JavaBeans,Third Edition》一书的作者
  本书不仅是高级设计模式的最佳指南,而且解决了EJB实现的关键问题。本书包括了20多个高级
EJB设计模式,还提供了使用EJB设计模式的策略,J2EE开发的最佳实例,以及非常实用的EJB设计技巧和技术。

本书还包括以下内容:
  ●架构模式、事务和持久性模式、客户端交互模式、主键生成策略
  ●用Ant构建系统的最佳实践
  ●JUnit测试策略
  ●如何使用JDO和EJB作为企业bean的替代工具

图书特色

关于作者 Floyd Marinescu是EJB设计模式方面的顶尖专家之一。他构建了TheServerSide.com—世界级领先的J2EE社团Web站点,并使其投入了运行。Floyd编写了大量的EJB设计模式,并且和社团一道努力工作,从而获得了EJB的最佳经验。他撰写了大量的论文,并在主要的Java会议频频亮相。Floyd同时也为中间件公司(www.middleware-company.com)工作,该公司是一家在EJB 和J2EE方面的培训和咨询公司。读者可以通过floyd@middleware-company. com和他取得联系。 关于为本书作出贡献的人 Randy Stafford是一个在软件开发的许多方面都很精通的专家,他在金融服务、数据库管理系统软件、医院、无线通信、交通、CASE和航天以及国防系统等多个信息技术的领域有15年的经验。他有作为许多公司的咨询师或者永久雇员的广泛的阅历,其中大公司有Travelers Express、Oracle、AMS和Martin Marietta,小公司有Gemstone、SynXis和Ascent Logic 企业。作为Smalltalk的开发者,他自1998年起就专注于面向对象和分布式系统的开发,并且自1995年起还加入了Web开发和电子商务的项目。 现在,作为IQNavigator公司的首席构架师,Stafford先生自1997年以来使用不同的J2EE应用服务器和Java ORB开发了8个分布式产品的java应用。他是GemStone系统公司的J2EE范例FoodSmart的创始人和构造者。他也是GemStone关于设计J2EE应用的模式语言的设计者,是J2EE应用框架之一GemStone专业应用服务基础类的设计者。他曾在2000年夏回溯他的后5个J2EE应用的最初发行版,用Ant构建了它们的自动版本。从1998年初最初发布JUnit开始,他一直在使用它,并且从1995年开始,他还使用了JUnit的前身SmalltalkUnit。 Stafford先生毕业于Colorado州立大学,获得过应用数学的理学学士学位和计算机系的授课硕士学位。他在面向对象的仿真和系统工程文献中赫赫有名。 Craig Russell是Sun微系统公司的产品架构师,负责一个对象关系映像引擎—透明持久性的体系结构。在过去的30年中,他从事过企业规模的分布式事务和数据库系统的构造、设计和支持。 Craig 是JDO(Java Data Object)规范的领导者,该规范是针对以Java为中心的持久性的、由JCP(Java Community Process)作为一种Java规范提案进行管理。

图书前言

这本书关系到软件开发人员的生活质量。无论开发者、系统架构师还是项目经理,在一天结束的时候,都会为在构建和发布设计精良的应用时没有产生代价高昂的错误、没有工作到深夜和没有经历那种长达数月的压力而感到高兴。我们都是普通人,都希望在一天结束的时候看到项目在按进度进行,并且回家后有充足的时间去干我们喜欢干的事情。
  然而,当使用诸如Java 2 Enterprise Edition(J2EE)这类正处在发展阶段的新技术时,设计精良的应用并不容易做到。在这类相对较新的领域中,总是非常缺乏有关设计优良系统的知识。开发者要么效率低下地从头开始努力学习,要么每天都在项目上产生很多代价高昂的错误。如果没有一些有条理的最佳经验可遵循,EJB开发者的工作将十分艰苦。学习优良的设计方法在技术上对于初学者来说尤其困难,他们中的许多人在这之前从来就没有构建过分布式系统,也不清楚影响分布式系统设计的最基本需求。
  更糟的是,EJB规范从一个版本到另一个版本的变化总是会给在设计优良的EJB系统时所使用的设计方式带来显著的变化。特别是随着EJB 2.0规范的引入,甚至在大多数最近出版的有关EJB的书中所讨论的多年来积累的最佳经验都将不再适用,或者达不到相同的目的了,使用这样的最佳经验可能导致设计出的系统非常拙劣。
  我们编写本书(中间件公司的“EJB for Architects”课程也讲授这本书中所描述的模式)为的是传播精妙的设计思想,提高开发者的设计质量,从而提高开发者自己的生活质量,我们的最终目的是希望帮助读者学习当今业界中顶尖的设计方法,以便快速地设计出高效的、可扩展的和可维护的系统。
  我们希望使用模式(Pattern)这种机制来给读者传授设计知识。

什么是模式
  模式是对常见的重复出现问题的最佳解决方案。也就是说,模式说明并解释了在设计和实现应用时所产生的重要的或者是具有挑战性的问题,并且讨论了对这个问题的最佳解决方案。随着时间的推移,模式开始体现出产生它的业界的集体智慧和经验。例如,本书中的模式呈现了成千上万的来自TheServerSide和业界的EJB开发者的智慧,他们的意见和评论为本书提供了很好的素材。

模式的优点
  模式当然有很多的用处,但是下面这些优点对于帮助诸如J2EE这样的新软件平台尽快成熟具有重要意义:
  为讨论设计问题提供高级语言。EJB开发者可以使用本书中的模式名字来高效地讨论实现细节。想象一下,描述一个应用是使用无状态会话外观(stateless session fa峚de)模式构建的比设法解释会话bean怎样包装实体bean 的所有语义要快许多。
  预先提供了许多设计工作。一个描述完备的模式详细讨论了需要解决的问题,并且通过正反两方面的讨论,说明了问题应该如何解决,以及其他应该了解的问题。通过研读模式,可以预先讨论和考虑许多具有挑战性的并且是潜在的深层问题。
  模式的组合有助于导出可复用的体系结构。模式总是在彼此之间互相引用和依赖。这种模式之间的连接创造了模式语言(pattern language):即一系列互联的模式,它们整体上常常代表了应用的完整的体系结构。这样,当阅读本书时,某些互联模式的集合将形成可以被反复应用于多个项目的可复用的体系结构。
  在本书中,我们重点选取了非常底层的与EJB相关的模式,也就是说,本书不关心那些可以应用于多种技术的通用的抽象模式,我们重点描述EJB模式,讨论与具体EJB相关的问题和复杂的实现方法。这样,在本书中,我们与许多其他的通常是说明一个模式的具体实现的模式书籍不同(那些模式不是与具体的项目相关的),我们的目标是为EJB开发者或架构师提供在基于EJB/J2EE的应用中使用这些模式所必需的所有信息。

模式的起源
  对许多人来说,首次接触模式都是通过里程碑式的经典著作《设计模式:可复用面向对象软件的基础》(design pattern: elements of reusable object-oriented software,Gamma,et al,1994,这本书已由机械工业出版社引进出版)。尽管这本书并不是第一本关于软件模式的书,但该书对于将模式的概念和使用引入到了软件开发的主流中去起到了不可估量的作用。
  模式的实际起源要远早于1994年。模式是Christopher Alexander第一个描述的,并且在20世纪70年代应用于城镇和建筑物的结构/体系中。在《A Pattern Language》(建筑模式语言,1977年)这本书中,Alexander写道:“每一个模式都描述了在我们周围的环境中一次又一次地重复发生的问题,并且描述了对这个问题的解决方案的核心内容,这样我们就可以成百万次地使用这个解决方案而又不会老调重弹。”
  模式是用来组织在生活中任何领域内的知识和解决方案的优秀方法,而不仅仅限于民用工程和软件设计领域。模式的结构和本性使它们能够很好地适用于对知识进行分类。好的模式不仅说明了解决问题的方法,而且以一种有助于解释问题的特征及其解决方案的形式组织起来。

本书中使用的模式描述风格
  本书采用了一种与Alexander所使用的、称为Alexandrian 形式(Alexan-drian form)的类似原始样式的风格来描述模式。我使用的格式为叙述风格,分为问题和解决方案等如下的几个段落:
  ●语境(context):描述有关模式应用语境。
  ●问题(problem):一个问题,用来说明这个设计模式将要解决的难题。
  ●限制(forces):详细解释语境和问题的若干段落,解释了在需要一个解决方案的工作中所存在的许多限制,这里读者将完全理解为什么需要这个模式。
  ●解决方案(solution):用于介绍作为上面所描述问题的解决方案的模式。
  ●解决方案描述(solution description):描述这个解决方案的若干段落,包括从正反两方面、从高层到低层对模式和在EJB中的实现问题的解释。

相关的模式
  “相关的模式”部分会交叉引用这本书中的其他模式,或其他资源中相同或相似的模式,“参考文献”部分详细介绍了其他资源。
  本书使用叙述风格而非要点陈述风格来描述模式,这使得在本书中用到的Alexandrian风格与大多数其他流行的软件模式书籍不同。本书的目标之一就是使有经验的架构师和初学者都可以读懂一个模式并且完全理解它。我努力实现这个目标的方法是采用流畅的叙述风格,把读者由问题引导到解决方案,在所有的必要点上都一步一步地解释,强调的是以一种简单而愉快的方式学习模式。
  在使用非Alexandrian风格时,往往会把模式分解为彼此互相分离的部分,其中每一部分都使用要点陈述风格进行描述。我认为采用这种风格是为了把尽可能多的信息打包在每一个要点中,这使得阅读和理解变得很困难, 因为这些信息更适合于参考而非适合于最终阅读。因此这样的模式书籍更适合于参考,但是本书的目标是同时将模式教授给有经验的架构师以及没有经验的开发者,所以必须选择一种有助于学习的描述风格,Alexandrian风格是最佳之选。

本书的组织
  本书在组织上可以分为两部分:第一部分“EJB模式语言”是EJB模式的目录,详细介绍了20种模式;第二部分“EJB设计和实现的最佳实践”包括围绕其他主题(例如模式的应用和实现基于EJB的实际系统等)讲授最佳方法的若干章节。我们的目标不仅是要给读者一个模式的目录,还要给读者掌握这些模式的知识和完成工作所必需的工具。在第二部分同时还包括一个用于描述实体bean的替代品的章节,它给EJB开发者提供了使用java数据对象(Java Data Object, JDO)来持久化一个对象模型的前景,还有一章描述了粒度更细的,因为其太小而难以成为一个完整模式的设计技巧和策略。

本书的读者
  本书深入讨论高级EJB话题,所以我们假设读者在读本书之前已经对EJB的基础知识有了很好的了解。我特别推荐Ed Roman的《Mastering Enterprise JavaBeans, Second Edition》(Wiley 2001),它是一本学习EJB基础知识和高级应用的优秀书籍。本书最初是Ed Roman的书中的一章,但是由于其内容不断地增加,于是我们决定将它独立成书。获得掌握本书内容所需背景的另一个途径是参加由中间件公司提供的Mastering EJB课程或者EJB for Architects课程来学习这本书中所有的模式。
  尽管这本书要求读者要了解有关EJB的知识,但它并不是仅针对有经验的架构师的。这本书的风格也适合于入门级的读者。特别是,在这本书的撰写过程中我们遵从了下面三个原则:
  1) 某些刚刚读过Ed Roman的《Mastering Enterprise JavaBeans, Second Edition》或其他EJB书籍的读者应该能够在没有什么太多困难的情况下就可通读和掌握这些概念。
  2) 本书内容的核心程度和技术深度即使对专家也颇有吸引力。
  3) 本书的每一部分所回答的问题都比它提出的问题要多得多。
  这三条原则是这本书的灵魂,原则3)可以保证我们提供在解释一个令人费解的话题时所必需的背景知识,而原则1)还使得本书重复了一些对EJB的介绍性的内容,原则2)则保证我们重点讨论那些在别的书中通常没有提到的、然而却是最有用和最重要的话题。

相关Web站点
  与本书相伴的Web站点:www.theserverside.com/pattern/ejbpatterns,包含了这本书中运行和编译的源代码例子,以及一个读者论坛。这个Web站点将很有希望不断地发展下去,因为随着时间的推移,读者会不断地向这个Web站点加入更多的模式。

小结
  本书与任何其他的模式书不同。你将不仅学习到很多有价值的、基础的模式,它们可以帮助你提高所编写的基于EJB的应用的质量,而且还将学习到怎样去接受这些模式的知识并以用例驱动的方式应用它们。同时,你将学习到许多关于如何去实现已经完成设计的应用的最佳方法。
  如果本书对你的事业和你正在从事的项目的质量有所贡献的话,我将非常欣慰。如果本书能够通过提高你的项目的效率从而使你的整个生活质量有所提高,那么它就超额完成了任务。

图书序言

许多具有良好架构的EJB项目都使用了设计模式,也许有的开发者当时并没有意识到在使用设计模式。开发者在项目开发过程中经常会构思出一些绝妙方案,但他们并没有意识到这些最优方案实际上就是设计模式(可复用的程序设计方法),而这些设计模式对其他开发者的项目也颇有益处。
这就是本书所述及的EJB设计模式的妙处所在—它们是从真实的EJB项目中抽取的实用的模式。J2EE开发人员可以到TheServerside.com上与他人分享各种设计模式。我们将作为一个社团在一起工作,不断充实这些模式,以飨读者。
Floyd Marinescu是世界著名的EJB设计模式专家,是他领导着EJB设计模式项目。Floyd和我已经共事多年。我们成立了The MiddleWare Company(中间件公司),旨在进行培训和咨询业务,帮助开发者掌握企业Java技术。
我们公司为实际的项目提供咨询,帮助提高设计模式的质量。我们还开设针对开发人员的EJB设计模式培训课程,而且从这些课程中获得的反馈信息显著提高了本书的质量。
在本书中,Floyd将向大家展示若干EJB设计模式,它们可以用于提高EJB项目的质量。恰当应用这些设计模式可以提高体系结构的设计水平,提高代码的复用性和质量,而且使所架构的系统对于那些熟悉这些模式的开发人员来讲更容易理解。
本书最大的优点是它易于理解。Floyd选择了一种容易理解的叫做Alexandiran形式的风格来描写模式。这使得任何懂得用EJB编写程序的人都可以轻松地阅读本书(如果你还不了解EJB,可以读一下拙作《Mastering Enterprise JavaBeans, Second Edition》(精通EJB(第二版)),该书在书店和Theserverside.com均可找到)。另外,你也可以参加EJB的培训课程,比如中间件公司提供的培训课程。
阅读本书你将获益匪浅。Floyd用了整整一年时间来处理复杂的EJB设计模式概念,这将对整个EJB社团都有益处。能和Floyd在这个项目上一起工作,我感到很荣幸,同时我也学到很多东西,相信读者也会感同身受。
Ed Roman
中间件公司CEO

作者简介

(美)Floyd Marinescu:暂无简介

译者简介

饶若南 陈昊鹏 张保稳:暂无简介

译者序

随着J2EE/EJB技术的日益流行,越来越多的企业选择使用J2EE/EJB技术来构建应用系统。但是,J2EE/EJB技术比较复杂,如何构建高效、安全和可靠的基于J2EE/EJB的企业应用系统是软件开发者要面临的一个挑战。很多有经验的EJB系统开发人员在他们的实践过程中总结出了许多可以提高系统性能的用于EJB编程的可复用方法,从而形成了EJB设计模式。这些设计模式可以帮助其他的EJB开发人员提高项目的质量,缩短项目的开发周期。但是EJB设计模式种类众多,所针对的问题各不相同,在解决问题时的侧重点也不尽相同。因此需要对它们进行分类整理,综合分析,使EJB开发人员能够在实际项目中选择最合适的设计模式。
  本书正是以这种方法来介绍EJB设计模式的。这本书分为两大部分,第一部分介绍了EJB设计模式语言,包括系统架构设计模式、层间数据传输模式、事务和持久性模式、客户端EJB交互模式以及主键生成策略等;第二部分介绍了从需求到模式驱动的设计、用Ant编译与用JUnit进行单元测试的EJB开发过程、实体Bean的替代物以及众多的灵活小巧的设计技巧等。这本书通俗易懂,书中述及的EJB设计模式都是从实际的EJB项目中抽取出来的,所以它们非常实用。
  本书的作者Floyd Marinescu是EJB设计模式方面的著名专家,他领导了EJB设计模式项目,并且和另外一名EJB领域的专家Ed Roman一起成立了一家培训和咨询公司,以帮助开发者掌握J2EE技术。
  我们在翻译本书的过程中力求忠于原著,对于本书中出现的大量的专业术语尽量遵循标准的译法,并在有可能引起歧义之处标注了英文原文,以方便读者对照理解。
  全书的翻译由饶若楠、陈昊鹏和张保稳合作完成。由于我们水平有限,书中出现错误与不妥之处在所难免,恳请读者批评指正。

图书目录

译者序
序言
前言
致谢
关于作者
第一部分  EJB模式语言
第1章  EJB层次构架模式 2
1.1  会话外观(Session Fa峚de) 3
1.2  消息外观(Message Fa峚de) 9
1.3  EJB 命令(EJB Command) 14
1.4  数据传送对象工厂(Data Transfer
Object Factory) 20
1.5  通用属性访问(Generic Attribute
Access) 25
1.6  业务接口(Business Interface) 31
第2章  层间数据传送模式 35
2.1  数据传送对象(DTO) 35
2.2  域数据传送对象(Domain Dto) 39
2.3  定制数据传送对象(Custom DTO) 43
2.4  数据传送散列映像(Data Transfer
HashMap) 45
2.5  数据传送行集(Data Transfer RowSet) 48
第3章  事务和持久性模式 53
3.1  版本号 53
3.2  用JDBC 读取数据 59
3.3  数据访问命令bean 63
3.4  双重持久性实体bean 69
第4章  客户端EJB交互模式 72
4.1  EJBHome工厂 72
4.2  业务代理 77
第5章  主键生成策略 83
5.1  序列块 83
5.2  EJB的全局惟一标识符 89
5.3  自动生成键的存储过程 93
第二部分  EJB设计与实现的最佳实践
第6章  从需求到模式驱动的设计 98
6.1  TheServerSide论坛消息系统用例 98
6.2  设计问题和术语的快速回顾 100
6.2.1  什么是域模型 100
6.2.2  理解J2EE系统中的层 101
6.3  模式驱动EJB架构 103
6.4  服务层模式 107
6.4.1  异步用例 107
6.4.2  同步用例 107
6.4.3  其他服务层模式 109
6.5  层间数据传送模式 110
6.6  应用层模式 113
6.7  小结 114
第7章  EJB开发过程:用Ant构建,用
Junit单元测试 115
7.1  开发顺序 115
7.1.1  独立于层的编码 117
7.1.2  首先是域层 117
7.1.3  其次是持久层 118
7.1.4  第三是服务层 119
7.1.5  最后是客户端层 119
7.2  自动化环境: 用Ant管理 120
7.2.1  什么是J2EE应用环境 120
7.2.2  管理J2EE应用环境意味着什么 120
7.2.3  使用Ant 122
7.3  用JUnit进行单元测试 136
7.4  小结 144
第8章  实体bean的替代品 146
8.1  实体bean的特性 146
8.2  实体bean和认知差异 147
8.3  捍卫实体bean 148
8.4  实体bean的替代品简介 149
8.4.1  使用直接JDBC操作/存储过程 150
8.4.2  使用第三方的O/R映像产品 150
8.4.3  构建定制的持久性框架 150
8.4.4  使用java数据对象 150
8.5  Java数据对象简介 151
8.5.1  需要的类及其依赖关系 151
8.5.2  构建和部署过程 152
8.5.3  继承 153
8.5.4  客户端API 154
8.5.5  动态与静态的查找机制 154
8.6  EJB开发者使用JDO的指南 154
8.6.1  准备EJB环境 155
8.6.2  配置会话bean 155
8.6.3  执行用例和事务管理 156
8.6.4  容器管理的事务 156
8.6.5  bean管理的事务 158
8.6.6  缓存/惰性加载和引用定位 159
8.6.7  查找JDO 159
8.6.8  层间数据传送 161
8.7  小结 162
第9章  EJB的设计策略、习惯用语和
技巧 163
9.1  不使用组合实体bean模式 163
9.2  采用Field命名惯例以允许在EJB 2.0
CMP 实体bean中执行数据确认 164
9.3  不要在实体bean上Get和Set值/数据
传送对象 164
9.4  如果能够被正确使用,就可以使用
Java的Singleton类 164
9.5  使用预定更新而不是实时计算 165
9.6  使用一个被序列化的java类来将编译器
类型检查添加到与消息驱动bean的交互
操作中 166
9.7  在发生应用异常时总是调用setRollback
Only 166
9.8  限制传递给ejbCreate的参数 167
9.9  不要在ejbCreate中使用数据传送对象 167
9.10  不要使用XML作为一种DTO机制来
进行通信,除非确实需要使用它 168
附录  模式代码清单 169
参考文献 204

教学资源推荐
作者: [英] 约翰·M. 斯图尔特(John M. Stewart) 著
作者: 宋晓宇 主编 赵艳平 副主编 杨艳春 李世伟 张洁 编著
作者: [美] 本贾尼?斯特劳斯特鲁普 (Bjarne Stroustrup)著
作者: John R.Hubbard
参考读物推荐
作者: Kevin Hoffman
作者: Patrick Keegan, Ludovic Champenois, Gregory Crawley, Charlie Hunt, Christopher Webster
作者: 钟大伟 高铎 王鹏 宋超 著
作者: 揭金良等