J2EE作为一个标准的体系结构,为使用Java进行基于Web的企业应用的开发与部署提供了无与伦比的支持。本书重点讨论J2EE平台的主干EJB的体系结构,描绘如何使用EJB组件体系结构开发与部署企业应用,并以示例阐述了在企业应用开发中如何应用EJB体系结构及其特性。\r\n\r\n 本书适合计算机专业研究生、企业应用开发部署人员及对EJB技术感兴趣的其他人员阅读。\r\n
\r\n
译者序 \r\n\r\n 序 \r\n\r\n 前言 \r\n\r\n 第1章 EJB体系结构的优势 \r\n\r\n 1. 1 从二层体系结构到J2KE体系结构 \r\n\r\n 1. 1. 1 二层应用体系结构 \r\n\r\n 1. 1. 2 传统的三层应用体系结构 \r\n\r\n 1. 1. 3 早期的基于Web的应用体系结构 \r\n\r\n 1. 1. 4 J2EE应用体系结构 \r\n\r\n 1. 2 EJB体系结构的优势 \r\n\r\n 1. 2. 1 对于应用开发者的好处 \r\n\r\n 1. 2. 2 对于客户的好处 \r\n\r\n 1. 3 小结 \r\n\r\n 第2章 EJB体系结构概况 \r\n\r\n 2. 1 什么是E3B应用 \r\n\r\n 2. 2 业务实体. 过程和企业bean的类型 \r\n\r\n 2. 2. 1 业务实体 \r\n\r\n 2. 2. 2 业务过程 \r\n\r\n 2. 2. 3 业务规则的实现 \r\n\r\n 2. 2. 4 企业bean的类型 \r\n\r\n 2. 2. 5 实体bean和会话bean的选择 \r\n\r\n 2. 2. 6 何时使用依赖对象 \r\n\r\n 2. 3 企业bean的结构 \r\n\r\n 2. 3. 1 企业bean的home接口 \r\n\r\n 2. 3. 2 企业bean的remole接口 \r\n\r\n 2. 3. 3 企业bean类 \r\n\r\n 2. 3. 4 部署描述符 \r\n\r\n 2. 4 容器工具和服务 \r\n\r\n 2. 4. 1 容器元素 \r\n\r\n 2. 4. 2 容器运行时服务 \r\n\r\n 2. 5 小结 \r\n\r\n 第3章 EJB角色 \r\n\r\n 3. 1 EJB角色 \r\n\r\n 3. 1. 1 bean开发者 \r\n\r\n 3. 1. 2 应用组装者 \r\n\r\n 3. 1. 3 部署者 \r\n\r\n 3. 1. 4 系统管理员 \r\n\r\n 3. 1. 5 EJB容器提供者 \r\n\r\n 3. 1. 6 EJB服务器提供者 \r\n\r\n 3. 2 工具 \r\n\r\n 3. 3 小结 \r\n\r\n 第4章 会话bean应用开发 \r\n\r\n 4. 1 何时使用会话bean \r\n\r\n 4. 1. 1 在Web应用中使用会话bean \r\n\r\n 4. 1. 2 在传统的三层业务应用中使用会话bean \r\n\r\n 4. 2 理解会话对象的状态 \r\n\r\n 4. 2. 1 有状态和无状态的会话bean的比较 \r\n\r\n 4. 2. 2 理解交互状态 \r\n\r\n 4. 3 应用示例概述 \r\n\r\n 4. 3. 1 应用的用户视图 \r\n\r\n 4. 3. 2 应用程序的主要部分 \r\n\r\n 4. 3. 3 福利登记业务过程 \r\n\r\n 4. 4 Enro1LmentEJB有状态的会话bean的细节 \r\n\r\n 4. 4. 1 Enro11mentEJB会话bean 的主要部分 \r\n\r\n 4. 4. 2 会话bean类Enro11mentBean的细节 \r\n\r\n 4. 4. 3 客户开发者的观点 \r\n\r\n 4. 5 PayrollEJB无状态的会话bean \r\n\r\n 4. 5. 1 PaP011EJB无状态的会话bean的组成 \r\n\r\n 4. 5. 2 客户开发者的观点 \r\n\r\n 4. 6 数据库模式 \r\n\r\n 4. 6. 1 EmployeeDatabase的数据库模式 \r\n\r\n 4. 6. 2 BenefitsDatabase的数据库模式 \r\n\r\n 4. 6. 3 Pavro11Database的数据库模式 \r\n\r\n 4. 7 容器提供的服务 \r\n\r\n 4. 8 小结 \r\n\r\n 第5章 容器中的会话bean \r\n\r\n 5. 1 容器元素 \r\n\r\n 5. 2 容器在运行时怎样管理会话bean \r\n\r\n 5. 2. 1 EJB home接口的查找 \r\n\r\n 5. 2. 2 会话对象的创建 \r\n\r\n 5. 2. 3 业务方法的调用 \r\n\r\n 5. 2. 4 会话bean的活化与钝化 \r\n\r\n 5. 2. 5 会话对象的删除 \r\n\r\n 5. 2. 6 会话bean的超时 \r\n\r\n 5. 3 小结 \r\n\r\n 第6章 理解实体bean \r\n\r\n 6. 1 实体Lean的客户视图 \r\n\r\n 6. 1. 1 home接口 \r\n\r\n 6. 1. 2 remote接口 \r\n\r\n 6. 1. 3 主键和对象标识 \r\n\r\n 6. 1. 4 实体对象生命周期 \r\n\r\n 6. 1. 5 实体bean句柄 \r\n\r\n 6. 2 实体bean的bean开发者视图 \r\n\r\n 6. 2. 1 实体对象的持久性 \r\n\r\n 6. 2. 2 实体bean类的方法 \r\n\r\n 6. 2. 3 实体bean实例的生命周期 \r\n\r\n 6. 2. 4 使用ejbLoad和ejbStore方法 \r\n\r\n 6. 2. 5 设计实体bean的remote接口 \r\n\r\n 6. 2. 6 对一个实体对象的同时调用 \r\n\r\n 6. 2. 7 与现有数据共同使用实体bean \r\n\r\n 6. 3 小结 \r\n\r\n 第7章 实体bean应用示例 \r\n\r\n 7. 1 应用概况 \r\n\r\n 7. 1. 1 问题描述 \r\n\r\n 7. 1. 2 应用的主要部分 \r\n\r\n 7. 1. 3 分布式部署 \r\n\r\n 7. 2 Star Enterprise公司的已有部件 \r\n\r\n 7. 2. 1 员工数据库 \r\n\r\n 7. 2. 2 薪水系统 \r\n\r\n 7. 3 Wombat开发的部件 \r\n\r\n 7. 3. 1 Wombat部件的概貌 \r\n\r\n 7. 3. 2 Enro1LmentEJB会话bean \r\n\r\n 7. 3. 3 EmptoyeeEJB实体bean \r\n\r\n 7. 3. 4 SelectionEJB实体bean \r\n\r\n 7. 3. 5 WrapPerPLanEJB实体bean \r\n\r\n 7. 3. 6 Knro11mentWeb Web应用 \r\n\r\n 7. 3. 7 BenefitsAdminWeb Web应用 \r\n\r\n 7. 3. 8 BenefitslDbatabase \r\n\r\n 7. 3. 9 各个部件的打包 \r\n\r\n 7. 4 Premium Health公司开发的部件 \r\n\r\n 7. 4. 1 概况 \r\n\r\n 7. 4. 2 PremiumHealthPlanEJB实体bean \r\n\r\n 7. 4. 3 HelPerEJB会话bean \r\n\r\n 7. 4. 4 PremiumHealthAdminWebWeb应用 \r\n\r\n 7. 4. 5 PremiumHealthAdminApp \r\n\r\n 7. 4. 6 PremiumHealthDatabase \r\n\r\n 7. 4. 7 打包 \r\n\r\n 7. 5 Providence公司开发的部件 \r\n\r\n 7. 5. 1 概况 \r\n\r\n 7. 5. 2 ProvidencePlanEJB实体bean \r\n\r\n 7. 5. 3 ProvidenceSewiceWeb Web应用 \r\n\r\n 7. 5. 4 打包 \r\n\r\n 7. 6 集成技术总结 \r\n\r\n 7. 6. 1 bean提供者发布EJB客户— 视图接口 \r\n\r\n 7. 6. 2 客户提供者发布EJB客户— 视图接口 \r\n\r\n 7. 6. 3 容器管理持久性的使用 \r\n\r\n 7. 7 小结 \r\n\r\n 第8章 理解事务 \r\n\r\n 8. 1 声明性事务划分 \r\n\r\n 8. 1. 1 事务属性 \r\n\r\n 8. 1. 2 事务属性值 \r\n\r\n 8. 1. 3 示例应用程序的事务属性 \r\n\r\n 8. 2 事务的编程划分 \r\n\r\n 8. 2. 1 通过客户划分事务 \r\n\r\n 8. 2. 2 通过会话bean划分事务 \r\n\r\n 8. 2. 3 使用事务的编程划分的缺陷 \r\n\r\n 8. 3 小结 \r\n\r\n 第9章 管理安全 \r\n\r\n 9. 1 系统管理员的职责 \r\n\r\n 9. 1. 1 管理用户和安全要点 \r\n\r\n 9. 1. 2 管理要点映射 \r\n\r\n 9. 2 容器提供者的职责 \r\n\r\n 9. 2. 1 鉴别和授权任务 \r\n\r\n 9. 2. 2 管理多个应用程序和域 \r\n\r\n 9. 3 应用程序提供者的安全视图 \r\n\r\n 9. 3. 1 客户鉴别 \r\n\r\n 9. 3. 2 授权 \r\n\r\n 9. 3. 3 声明性安全机制 \r\n\r\n 9. 3. 4 安全角色 \r\n\r\n 9. 3. 5 方法许可 \r\n\r\n 9. 3. 6 可编程安全APl \r\n\r\n 9. 3. 7 安全应用示例 \r\n\r\n 9. 4 部署者的职责 \r\n\r\n 9. 4. 1 部署Wombat的企业bean \r\n\r\n 9. 4. 2 部署Premium Health的企业bean \r\n\r\n 9. 4. 3 部署Providence的企业bean \r\n\r\n 9. 5 小结 \r\n\r\n 附录A API参考 \r\n\r\n 附录B 代码示例 \r\n\r\n 术语表 \r\n
\r\n
译者序
随着Web和Internet的发展, 越来越多的企业开始开发与部署基于Web的企业内部网和外部网应用. J2EE为基于Web的企业应用提供了无与伦比的支持. J2EE是一个标准的体系结构, 它特别面向使用Java程序设计语言进行基于Web的企业应用的开发与部署. J2EE平台的主干是EjB体系结构, 它规范了如何用Java程序设计语言开发与部署服务器端应用业务逻辑组件. J2EE平台的其他部分, 例如JSP和servlet, 是对EJB体系结构的补充, 提供呈现逻辑以及客户交互控制逻辑等功能. 一个着眼于创建与销售可重用的基于EJB的业务组件的技术已经开始广泛应用.
本书提供了EJB体系结构的深层次技术, 描绘了如何使用EJB组件体系结构开发与部署企业应用. 全书共9章, 第l章描述了EJB和J2EE体系结构的当前状态, 以及它们如何满足当今企业计算的需求. 第2章给出了EJB体系结构的简明概要. 第3章描绘了企业应用开发过程中涉及的角色和任务. 第4章和第5章重点介绍会话bean, 分别阐述了会话bean的应用开发以及EJB容器为会话bean提供的支持和服务. 其中的一个福利登记应用示例阐明了会话bean的关键点. 第6章和第7章着眼于实体bean, 它们给出了实体bean编程的基本概念, 并讨论了容器为实体bean提供的服务, 并展示了一个实体bean应用示例. 第8章和第9章分别描述了EJB体系结构对事务处理的支持以及EJB安全环境. 本书适合于计算机专业的研究生. 企业应用开发者. 信息技术经理以及其他对EJB技术感兴趣的读者. 我们衷心期望本书能够
有益于我国EJB企业应用开发.
本书第l. 2. 3章由瞿裕忠翻译, 第4章由尚云飞翻译, 第6. 7章分别由陆海涛和彭晓辉翻译, 第5. 8. 9章由东南大学XObjecls Group(http://xobjects. seu. edu. cn)的几位成员共同翻译. 全书由翟裕忠审稿. 有关EJB技术及其在电子商务中应用的技术资料和应用示例, 请访问东南大学电子商务研究所的Web站点(http://ebi. seu. edu. cn). 在翻译过程中, 译者参阅了大量的国内外资料. 本书的翻译工作得到了机械工业出版社的支持, 也得到了东南大学XObjects Group成员的大力支持, 在此, 我们深表谢意!
限于译者的水平及时间, 本书尚有许多不足之处, 恳请读者指正.
2001年3月于东南大学
本书提供EJB(Enterprise JavaBeans, 企业Java组件模型)体系结构的深入介绍, 描绘如何使用EJB组件体系结构开发与部署企业应用.
本书读者应该熟悉Java程序设计语言, 并且对企业bean和EJB体系结构有所了解. 虽然我们将简单地介绍EJB体系结构的基本知识, 但本书决不是一本面向那些刚入门企业bean的指南. 相反, 本书提供EJB体系结构的深层次技术, 适合于企业内部实现应用的信息技术人员或者面向企业开发一般应用的独立软件提供商(ISV).
EJB体系结构为企业应用定义了一个组件模型, 它描述了:
·如何作为一个组件集合设计应用.
·组件之间如何交互.
·这些组件如何与它们的EJB容器交互.
EJB体系结构以“约定”形式定义这些交互, 从而使得应用能够使用不同来源的组件. 因为EJB组件必须遵循这些约定, 一个应用能够由来自不同提供商的软件组件构成.
EJBl. 1规范主要从容器提供商的角度定义了这个体系结构约定. 相反, 本书主要从EJB应用开发者的角度介绍这个体系结构.
有关两个企业应用开发的详细描述构成了本书的主线. 尽管这些应用示例相对来说是简单的, 但是它们展示了企业应用开发中遇到的许多典型问题. 我们使用这些示例展示EJB体系结构是如何帮助开发者解决这些问题的.
第一个应用示例是由一个IT部门内部开发的一个福利登记应用. 这个应用对于解释一个会话bean怎样工作以及阐述开发者如何使用会话bean来说是一个很好的工作示例.
第二个示例采用第一个示例中的福利应用(它是内部开发的), 将它变成一个由独立软件提供商(ISV)开发的一个应用. 与一个内部IT部门相比, 一个ISV有着不同的设计目的. ISV必须将应用设计成能够很容易地部署到许多不同客户的作业环境. 因为每一个客户都有着独特的作业环境, ISV必须面对一些挑战. 另外, 一个ISV通常需要将应用设计成能够由一个客户或者集成商来扩展. 我们阐述实体bean体系结构是如何帮助ISV克服这些困难的.
这两个示例阐述了在企业应用开发中将EJB体系结构应用到这些特定问题的许多技术. 除了这两个应用示例, 我们描述了EJB体系结构的个别特性, 并讨论何时以及如何在应用中使用这些特性.
虽然典型的应用开发者不必知道EJB容器是如何工作的, 但是我们还是阐述了EJB容器的一些内幕. 我们这样做主要是为了向读者展示EJB容器能完成许多任务来满足EJB应用的要求.
其他信息资源
你应该参考与Java2平台企业版应用体系结构(J2EE)相关的出版物. 下列书籍对于那些开发除了企业bean以外的其他应用组件的开发者来说特别有益.
·Java 2 Platform, Enterprise Edition Spectification, Version 1.2 copyright1999, Sun Microsystems, Inc. Available at http:/java. sun. com/j2ee/docs. htm].
·Java 2 Platform, Entreprise Edition, Connector Specification, copyright 2000, Sun Microsystems, Inc.
·Java 2 Platform, Enterprise Edition, Platform amd Component Specifica-tion, Shannon, Hapner,Hapner, Matena, Davidson, Pelegri—Llopart, Cable, Enterprise Team, copyright 2000, SunMicrosystems, Inc.
·Enterprise JavaBeans 1.1 Specification, Final Release, copyright l999, 2000, SunMicrosystems, Inc.
·Enterprise JavaBeans 2. 0 Specification, Public Draft, copyright 2000, Sun Microsystems, Inc.
·Developing Enterprise Applications with Java Platform, Enterprise
Edition, Version 1.0, Kassem, EnterpriseTeam, copyright 2000, Sun Micro—SyStems, Inc.
·RMI over IIOP 1.0.1 Specification, copyright l999. Sun Microsystem5, Inc. Availableat http://java. sun. com/products/rmi-iiop.
关于应用示例
值得注意的是, 第4章中的应用示例和第7章中的实体bean应用的书写并没有使用交互式开发环境. 通常, 企业应用开发者使用一个商用IDE来开发EJB应用. 一个IDE生成很多JDBC和其他的数据库存取代码, 手工书写这些代码通常是很艰难的. 应该认识到并记住EJB应用开发比我们的一些示例代码容易, 也许是因为实践中大量的代码是由IDE自动生成的.
由于我们的目标是阐明EJB体系结构的使用, 因此我们希望保持代码的相对简单. 从而, 我们并不总是表述什么样的开发者被认为是企业应用的最佳编程实践者. 假如包含这种代码以显示这样的经验, 那么我们会模糊EJB的阐述. 为了简化示例代码起见, 我们有时并不很好地处理代码中抛出的异常.
本书内容
本书以叙述EJB体系结构的好处作为开篇. 第1章讨论不同的企业应用体系结构, 以及它们是如何发展的, 特别是随着Web的发展而发展. 这一章描述了EJB和J2EE体系结构的当前状态, 以及它们是如何适应于满足当今企业计算的需求.
第2章给出了EJB体系结构的一个简明的概要. 对于那些尚未熟悉E形体系结构的读者, 这一章是一个很好的起点, 因为它定义了EJB术语和企业bean的结构. 它定义并描述了EJB应用和一些基本概念, 例如业务实体和业务过程. 它给出了各种类型企业bean的概况. 构成企业bean的部件. 以及如何使用企业bean来建模企业应用的业务逻辑.
EJB应用开发可以用需要执行的任务来加以思考. 第3章最终描绘了应用开发过程中涉及的角色和任务.
在这个舞台搭建以及入门资料解释之后, 我们将注意力集中到会话bean和实体bean. 有两章集中在会话bean, 另外两章集中在实体bean. 第4章介绍适合于那些使用会话bean的应用的典型编程风格. 这一章对于实现会话bean的开发者和开发会话bean的客户的应用编程者有所婢益. 对于会话bean的开发者, 它描述了实现会话bean的方法的最佳途径. 对于开发会话bean的客户的应用编程者, 它展示了如何正确使用会话bean的home和remote接口. 一个福利登记应用示例阐明了会话bean的关键点.
第5章描述了一个EJB容器为一个会话bean提供的支持和服务. 当会话bean被部署与定制到一个特定的作业环境中时, 以及在运行时一个客户应用激活这个会话bean时, 容器通常为这些会话bean提供服务. 虽然这些容器服务对于bean开发者和客户应用编程者是隐蔽的, 但是这些服务对于简化bean和客户应用的开发大有帮助. 这一章给出了这些服务的许多内幕.
在结束会话bean的讨论之后, 本书将注意力转移到实体bean. 实体bean与会话bean有很大的不同. 第6章从bean和客户开发者两种角度, 给出了实体bean编程的基本概念并讨论了容器为实体bean提供的服务. 这一章类似于第5章对会话bean的讨论. 这一章还详细描述了管理实体对象状态的策略. 第7章利用那个用在会话bean中的福利登记应用示例, 展示如何使用实体bean书写同样的应用. 这个示例阐明了有关实体bean的许多开发技术, 还阐述了实体bean如何被ISV用来制作他们的应用, 以便能够跨越众多客户的作业环境.
使用企业bean的所有应用事实上都依赖于事务处理. 第8章描述了EJB体系结构对事务处理的划分方法. 它包含了应用开发者必须明白的有关事务处理的本质.
安全是企业应用的另一个关键领域. EJB体系结构宣布了对安全管理的支持. 第9章描述了EJB安全环境, 特别从应用开发者的角度进行了阐述.
本书最后包含一个有关API参考的附录, 一个有关支撑类代码示例的附录. 以及一个术语表. 参考部分包含EJB体系结构定义的所有接口, 以及每一个接口中的方法.