出版社:电子工业出版社
作者:(美)罗曼(Ed Roman),(美)斯瑞格奈斯(Rima Patel Sriganesh),(美)布罗斯(Gerald Brose)著;罗时飞译
定价:69.00

作者简介  前言  本书特点  全文内容安排  译者序  目录

 

   本书是关于 EJB 2.1 的经典书籍,是 EJB 开发者必备的参考书。全书共分为 3 篇。第 1 篇对 EJB 编程基础进行介绍,它概要性地对 EJB 进行了阐述,无论是 EJB 初学者,还是资深 EJB 专家,这部分内容都值得阅读;第 2 篇重点关注 EJB 编程的具体内容和过程,其中,研究了如何开发如下三种 EJB 组件:会话 Bean 、实体 Bean 和消息驱动 Bean 。具体内容包括开发各种 EJB 组件的基础知识(结合开发实例)、组件生命周期的详细阐述;第 3 篇是本书最为令人兴奋的一部分内容。专注于高级 EJB 专题;附录收集了 EJB 组件技术相关的其他内容。

读者对象 :本书适合作为 Java 程序员、网站开发人员和系统分析员的参考书。

特色 :从本书第一版,到读者手中的第三版,本书已经持续好几年了。而且,我们都一直将它作为优秀的项目看待。此书从第一版开始就得到很多读者认可,他们都认为这是一本很棒的技术书籍。

本书是 EJB 组件技术教程,专注于 EJB 概念、方法和开发过程。同时,本书还研究许多高端 EJB 知识,使得开发者能够真正理解和掌握 EJB ,实践出真知。因此,通过阅读此书,开发者将精通 EJB 。

  阅读完本书后,你将有如下收获:

  ● 用 EJB 2.1 标准进行应用程序开发

  ● 精通完整的 EJB 2.1 技术,包括: Java RMI 、 RMI-IIOP 、 JTA 、 JNDI 、 CORBA 和 XML

  ● 用会话 Bean 和实体 Bean 进行应用程序开发

  ● 设计、实现一个实际的应用系统

 


作者简介

 

   Ed Roman 高端中间件技术领域中的世界级权威人士。在Sun Microsystem推出企业级Java解决方案初期,他就一直在跟进中间件技术,并且,已经设计、构建、部署了大量的企业应用。其中,他还架构并开发了完整的应用服务器产品。同时,他还为Sun的企业级规范作出了很大的贡献,而且经常参与中间件兴趣列表的开发工作。另外,还在中间件领域的会议上经常发言或演讲。
   Ed是Middleware公司(通过http://www.middleware-company.com能够找到)的创始人之一。Middleware公司为中间件专业人员提供世界级的咨询服务。而且,它还为开发者、技术厂商、企业提供高端技术的实现,并不断改进、革新它们。Middleware公司包括TheServerSide社区、MiddlewareREACH、MiddlewarePRO。其中,每月至少有50万名专业人员借助于TheServerSide社区提供的论坛讨论、解决富有挑战性的行业和技术问题。Middleware公司为如下世界级软件厂商提供服务:BEA System、Compuware、HP、IBM、Microsoft、Oracle、Sun Microsystem、VERITAS软件等。当然,Ed也是TheServerSide.com的创始者,一个著名的J2EE社区网站。每天,都有成千上万个开发者聚集在TheServerSide.com,以分享EJB设计模式、获取最新的EJB资讯、询问和解决EJB开发问题、阅读文章和技术评论。在阅读本书的过程中,请到TheServerSide.com获得最新的EJB信息。TheServerSide.com提供的这些资源都是免费的,服务于整个开发社区。
   Rima Patel Sriganesh 目前,Rima在Sun Microsystem公司的Technology Outreach Group从事技术工作。她擅长于Java、XML、集成平台。并且,如下一些技术是她狂热关注的:分布式计算模型、安全性和信任计算、语义网、网格计算、量子物理等。Rima经常在很多重量级的会议上发表演说,比如JavaOne、Web Services Edge、SIGE 101、Sun Technology等。同时,Rima还代表Sun公司参与安全性、Choreography、金融服务等技术标准的制定工作。 Rima是《Developing Java Web Services》一书的合著者,由Wiley于2002年出版发行。通过她的个人Blog和论文,能够获悉她的研究内容和工作情况。 Rima毕业于印度古杂拉特州的MS大学,主攻数学专业。目前,Rima同她丈夫生活在大波士顿。 通过Google能够查询到Rima(比如,通过关键字“Rima Patel、Sun Microsystem、Rima Patel Sriganesh”等查询)。
   Gerald Brose 工作于Xtradyne Technologies公司,担任安全性方面的软件架构师。Gerald是中间件安全性领域中的专家,比如CORBA、J2EE、Web服务。在国际会议中,经常能够看到他。曾出版过中间件安全性及其相关领域的专著和其他出版物。Gerald还是《Java Programming with CORBA》的合著者,由Wiley于2001年出版发行。 作为Java Open Source社区的成员,Gerald还维护JacORB。JacORB是Java领域中广泛使用的CORBA ORB。如今,JBoss应用服务器使用JacORB作为IIOP引擎。Gerald从德国柏林Freie大学获得计算机科学博士学位。他同妻子及两个孩子生活在德国柏林。
关于译者:
  罗时飞,Java EE架构师。西安交通大学硕士。从事Java EE开发、架构工作多年,曾担任大型软件公司产品开发经理,实践经验丰富。对Java EE平台中的标准架构、Open Source技术有深入研究。个人网站:http://www.open-v.com。 代表作品: 《精通Spring》 (第1版,编著) 《JBoss Administration and Development》(第3版,译) 《The J2EE Tutorial》(第1版,合译)

 


前言

 

   本书是EJB组件技术教程,专注于EJB的概念、方法、开发过程的介绍。同时,本书还研究许多高端的EJB知识,使得开发者能够真正理解和掌握EJB,实践出真知。因此,通过阅读此书,开发者将精通EJB。
   当然,说起来容易做起来难。EJB组件技术吸收了企业级计算领域中各个方面的丰富经验和知识,比如分布式计算、数据库、安全性、组件驱动软件等。这对于整个Java社区而言,实际上是向前迈进了一大步。但是,这对于开发者而言意味着需要花费更多的精力去研究和学习EJB组件技术。别担心,本书正是从EJB最基础知识开始,向开发者阐述EJB中最为重要、基础的内容。最终,开发者将能够开发出基于Java的、一流的可重用组件。
  在整个行程中,开发者可以去Sun下载EJB规范。 具体网址如下: http://java.sun.com/products/ejb/docs.html

 


本书特点

   本书第一版于1999年出版,2002年出版了第二版。在写作第二、三版的过程中,我们在持续改进此书。我们也确信,开发者会喜欢这本书。本书特点如下:
  n 更新到EJB 2.1。本书深入研究了从EJB 2.1引入的新特性。
  n 确保广度和深度。本书并没有研究完整的EJB规范,也没有涉及到EJB技术的各个细节。相反,它涉及到了EJB组件技术中最为重要的内容,并且讨论了EJB高级技术。如果开发者在开发EJB组件过程中需要完整的EJB技术指南,则请参考EJB规范,记得下载Adobe Acrobat阅读器。作为一本交互性好、读起来有趣、涉及到EJB中各方面知识的书籍,本书确信这正是开发者在寻找的。
  n 尽量短小精悍。读者的时间是很宝贵的,而且他们都希望阅读大量的书籍。为了满足读者的需要,我们在保证图书内容的前提下,尽量确保全书篇幅小。因此,消除了很多重复的实例。通过阅读此书,开发者能够快速研究EJB技术,而不是花费很长的时间。作为技术写作者,写短小精悍的图书比长篇大作更难。
  n 针对开发者写作。本书并不是为高级商务人士而写的,这是一本技术书籍。
  n 保证图书格调的正确性。本书的主要作者——Ed Roman拥有大量的培训、知识传播经验,并将这些应用到图书写作中。
  n 对话风格。在阅读此书过程中,开发者就像同作者面对面交流一样,从而拉近我们之间的距离。这使得开发者能够很轻松地掌握EJB技术,而且效率极高。
  n 图、列表并重。图表达的信息比文字丰富。而且,通过列表将不同内容的文字区分开,有利于读者快速阅读。
  n 一致的声音。本书是几个合作者共同写作完成的,但是开发者体会不到,因为全书的口吻是一致的。我们在确保风格一致的同时,还保证这些一流的作者能够共同完成一流的EJB知识写作,并传授给开发者。
  n 既是介绍性书籍,又是深入研究技术的。通常,开发者手头都会有很多技术介绍性的书籍,本书冲出了这个领域,高级技术与介绍性知识并重。我们做过大量的研究。比如,开发大量的实际项目、参加学术会议和研讨会、同全世界顶级专家进行合作。
  n 独立于EJB服务器厂商。所有同特定EJB服务器厂商相关的代码在本书并没有出现,而是放置在本书的源代码中。因此,本书适合于任何EJB服务器。
  n 从培训课程中积累了丰富的EJB经验,并应用于本书。从多年的EJB/J2EE教学经验中,学员赋予了我们大量的知识。
   n 提供所有源代码,并公开于网上。在Web上,开发者能够下载到本书最新的代码。开发者能够在第一时间浏览到全书代码。 。

 


全书内容安排

 

   全书共分为4个部分。
  n 第一部分。对EJB编程基础进行介绍。概要性地对EJB进行了阐述。无论EJB初学者,还是资深EJB专家,这部分内容都值得阅读。其中,包括的章节如下。
   ? 第1章。企业计算概述。本章将探讨组件、面向服务架构、分布式计算框架、容器,另外,还将介绍EJB和J2EE。
   ? 第2章。研究EJB系统的基础知识。其中,重点介绍了请求拦截,另外,还介绍了构成EJB组件的各种不同源文件。
   ? 第3章。在前述章节的基础上,开发了一个简单的HelloWorld EJB组件,在EJB中如何使用JNDI方面的内容也有介绍,另外,还给出了客户访问EJB组件示例。
   n 第二部分。重点关注EJB编程的具体内容和过程。其中,研究了如何开发如下三种EJB组件:会话Bean、实体Bean、消息驱动Bean。具体内容包括,开发各种EJB组件的基础知识(结合开发实例展开说明)、组件生命周期的详细阐述。
    ? 第4章。介绍会话Bean。本章内容将研究有状态和无状态会话Bean之间的区别、如何开发会话Bean、会话Bean的工作机理。
    ? 第5章。重点研究如何使用EJB实现Web服务。本章特别展示了如何将无状态会话Bean实现为Web服务。
    ? 第6章。介绍实体Bean。其中涉及到持久化概念、为什么实体Bean很特殊、构建实体Bean时需要开发哪些内容等。
    ? 第7章。介绍Bean管理持久化实体Bean(Bean-Managed Persistence,BMP)。本章将开发BMP实例,并研究BMP的工作机理。
    ? 第8章。介绍容器管理持久化实体Bean(Container-Managed Persistence,CMP)。本章内容将重点关注EJB 2.1引入的新特性。本章将开发CMP实例,并研究CMP的工作机理。
    ? 第9章。介绍消息驱动Bean。首先,回顾了Java消息服务的一些知识。通常,在消息驱动Bean中,JMS是最主要的消息框架。最后,系统地研究了如何开发消息驱动Bean组件。
    ? 第10章。探讨EJB环境,其中包括容器提供的平台服务。比如环境属性、资源工厂、企业Bean之间的引用、Handle。 n 第三部分。本书最为令人兴奋的一部分内容,专注于高级EJB专题。其包括的章节如下。
    ? 第11章。介绍了在EJB应用中如何选用各种Web应用框架、模型驱动开发(Model-Driven Development,MDD)工具等,另外,还研究了EJB设计、开发及测试中的最佳实践。
    ? 第12章。专注于事务。在构建EJB应用中,事务往往是尤为重要的问题。本章首先从事务的概念入手,然后介绍如何在EJB中使用事务,另外,本章还介绍了JTA和J2EE扩展事务。
    ? 第13章。深入研究了EJB涉及到的安全性、Java认证和授权服务、安全性的便携性、Web服务的安全性。
    ? 第14章。介绍了EJB 2.1新引入的EJB Timer服务(用于任务调度),供自动执行任务使用。
    ? 第15章。深入研究容器管理关系,即CMR。这对于复杂的持久化行为而言尤为有益。通过本章内容,开发者能够掌握RDBMS中涉及到的基数、字典、引用完整性、级联删除概念。另外,本章还将研究在BMP和CMP中如何开发CMR。
    ? 第16章。专注于持久化中的最佳实践。比如如何在实体Bean和其他持久化技术间选型、是否使用BMP或CMP等专题都给出了详细的研究。因此,开发者能够从我们的经验和实践中获得持久化的最佳实践方案。
    ? 第17章。深入剖析与EJB技术平台相关的企业应用集成问题。本章对各种可用的集成方式都作了认真细致的分析,并且讨论了用于集成EJB组件技术的各种技术。当然,J2EE连接器架构是用于集成后端企业应用的主要利器。本章除了介绍J2EE连接器架构外,还结合实例深入讨论了如何开发连接器。
    ? 第18章。为设计和部署高性能的EJB应用,本章给出了大量的技巧和技术,从而能够达到上述目标。很多设计策略都在本章研究,比如如何在本地和远程接口间选型、如何在有状态和无状态会话Bean间选型等,另外,本章还为各种类型的EJB组件提供了大量的性能调优技巧。
    ? 第19章。研究大型EJB系统中的群集技术。开发者将体会到群集技术的工作机理,而且能够深入到具体EJB容器实现群集的策略中。如果开发者需要在多台协作机器间构建系统,则建议认真阅读本章内容。
    ? 第20章。专注于EJB项目管理。首先,本章介绍了如何确保在项目初期正确地启动项目。其中,涉及到如何在J2EE和.NET框架间选型、构建系统原型、组建开发团队等其他高级项目管理主题。
    ? 第21章。针对项目需求选用正确的EJB服务器,这就是本章的重点。本章系统地给出了应该如何比较EJB服务器及其厂商的优劣的方法。同时,还给出了在EJB服务器中,选择应用其提供的功能。这些都是很好的指导方针。
    ? 第22章。本章使用EJB组件技术构建了实际J2EE系统。无论是EJB组件之间的相互使用,还是使用Java Servlet和JSP技术连接到EJB组件,都是本章的重点议题。当然,使用UML设计EJB对象模型也是本章的研究内容之一。
   n 附录。收集了EJB组件技术相关的其他内容。当然,有些开发者可能经常要翻阅这部分内容,但其他的开发者未必。其包含的内容如下。
    ? 附录A。阐述基于Internet ORB间协议(IIOP)的Java远程方法调用(RMI)Java命名和目录接口(JNDI)。在使用EJB技术前,开发者必须掌握它们。如果开发者刚接触EJB,则请务必先阅读这部分内容。
    ? 附录B。研究EJB与CORBA系统的集成。开发者将体会到,使用RMI-IIOP能够实现EJB和CORBA的相互操作。另外,还给出了实例代码,供演示CORBA客户调用EJB组件。
    ? 附录C。提供部署描述符开发指南。这部分内容对部署描述符进行了深入、系统的研究。如果开发者需要关注部署描述符,请及时阅读这部分内容吧!=
    ? 附录D。深入揭示EJB查询语言(EJB QL)。
    ? 附录E。提供了API和流程图,供掌握EJB使用。其中,涉及到各种EJB组件类型的工作机理研究。

 

 

图解
  本书的大部分图都是基于统一建模语言(Unified Modeling Language,UML)制作的。如今,在软件工程领域中,UML是事实上的标准。如果开发者不熟悉它,则请参阅《The Unified Modeling Language User Guide》(Addison Wesley,ISBN 0201571684)一书。此书为开发者阐述了如何在软件开发过程中有效地使用UML技术。UML对面向对象的贡献很大。通常,开发者在具体编码之前,都会使用UML抽象出对象模型,从而完成系统的设计工作。当然,这方面的内容并不是本书的重点。

服务网站
  为保证在本书出版之后,开发者能够同它保持持续更新,本书特别提供了Web站点。其中,包括如下内容。 n 本书所有的源代码,借助于Ant脚本,开发者能够编译、运行它们。前提是开发者需要准备好兼容于J2EE 1.4标准的应用服务器。 n 对源代码的持续更新。 n 错误信息。 n 本书的PDF版本。 该Web站点如下: http://www.wiley.com/compbooks/roman

反馈
  对于EJB编程人员而言,他们都有大量的开发经验,并同大家分享。如果您乐意,请通过E-mail告知我们,有关你们的实例、实施案例、失败教训或者任何有助于EJB开发的经验。我们将在Web网站上发布它们。 至于本书的Bug,请发E-mail到如下信箱: books@middleware-company.com 至此,一切准备工作已经就绪。开始探索EJB组件技术吧!

 


译者序

 

    本书注重形式与内容的讨论,但凡世界万物,都可以用形式与内容进行分析、讨论。 EJB已经发展到2.1版本了,3.0正处于制定中。不论它发展到什么版本、程度,其核心内容、思想、语意始终变化不大。从形式上看,每一次版本的发布都存在很大区别。不只是EJB,其他各种技术(有点夸张)都是如此。
   如果开发者的立足点是掌握技术的思想、核心内容,演练、使用具体技术(API)将会是很快乐的事情。如果仅仅对其API的使用感兴趣,将会很痛苦,毕竟这部分人没有深入其中。
   读者手中的《精通EJB(第三版)》,更多地是对EJB 2.1的内容进行深入研究、演练。甚至,它对内容的讨论并不局限于图书名称本身,因为它已经延伸到Java EE应用开发、架构了。可以认为,几位作者通过对EJB研究,使得开发者(读者)不仅掌握EJB技术,同时还获得了一种思想——“在技术之上去掌握技术本身”。
  此书行文流畅,通俗易懂。它对企业级Java的龙骨,即EJB 2.1进行了全方位的阐释。从EJB基础知识,到安全性、事务、最佳实践、性能优化,到Web框架、EJB容器的选择,再到应用集成、Open Source技术所带来的影响等内容,此书都给出了相当精彩的演绎,并附有大量实例。
  就目前而言,Open Source社区在对标准Java EE技术作出重要贡献的同时,Java EE平台也试图标准化Open Source所取得的成果。期间,以Spring、Hibernate、Tapestry为Open Source技术的代表。当然,不仅仅是开发框架,Java EE应用服务器也在“瘦身”。所有的一切,都在回归到POJO。开发者所期盼的王子(POJO)即将归来。几乎可以预料,将来的中间件平台将能够自定义。这些都是因为开发者(也包括终端用户)尝到了轻量级架构的甜头(敏捷)。
  这些主流Open Source技术的背后都有EJB技术的贡献。Spring,事实上的应用级框架,借用了大量的EJB知识(声明式事务、安全性、将IoC从幕后推向前端等)。Tapestry,引领了Web编程革命,其独有的页面池、引擎池正是借用了EJB实例池的思想。Hibernate,掀起了实体Bean(Java持久化技术)的瘦身革命。现在,它们在回馈Java EE(融入了大量的Open Source元素、思想和方法)。
很显然,EJB技术是这场革命的“始作俑者”。你是否想揭开幕后的真相呢?赶紧研读此书吧!否则,你只能够停留于形式了。
   当然,译者本人水平有限,中文化过程中一定会存在不够完美的地方,甚至存在理解错误,请读者不吝赐教吧! 译者 罗时飞 2005年8月 于广州

 


目录

第1篇 总述

第1章 概述 3
1.1 EJB产生背景 4
1.2 组件架构 6
1.3 终极无间——可重用服务 8
1.4 EJB介绍 9
1.4.1 钟情Java 10
1.4.2 业务层组件——EJB 10
1.5 EJB生态圈 12
1.5.1 EJB组件提供者 13
1.5.2 应用组装者 13
1.5.3 EJB部署者 13
1.5.4 系统管理员 14
1.5.5 容器和服务器提供商 14
1.5.6 工具供应商 14
1.5.7 角色 15
1.6 J2EE 16
1.7 小结 20
第2章 EJB基础 21
2.1 企业Bean 21
2.2 分布式对象——EJB的支撑 24
2.3 分布式对象和中间件 25
2.3.1 显式中间件 25
2.3.2 隐式中间件 26
2.4 EJB的组成部分 27
2.4.1 企业Bean的Bean类 28
2.4.2 EJB对象 28
2.4.3 Home接口 32
2.4.4 本地接口 34
2.4.5 部署描述符 36
2.4.6 供应商特定文件 37
2.4.7 Ejb-jar文件 37
2.4.8 术语集合 38
2.5 小结 39
第3章 开发第一个EJB组件 41
3.1 如何开发EJB组件 41
3.2 远程接口 43
3.3 本地接口 43
3.4 Home接口 44
3.5 本地Home接口 46
3.6 Bean类 47
3.7 部署描述符 50
3.8 供应商特定文件 51
3.9 Ejb-jar文件 51
3.10 部署EJB组件 52
3.11 可选的EJB客户端jar文件 52
3.12 如何调用EJB组件 53
3.13 运行整个应用 57
3.14 实现组件接口 57
3.15 小结 59

第2篇 EJB组件

第4章 会话Bean介绍 63
4.1 会话Bean的生命周期 63
4.2 会话Bean的子类型 64
4.2.1 有状态会话Bean 64
4.2.2 无状态会话Bean 64
4.3 有状态会话Bean的不同点 66
4.3.1 实现实例池功能 66
4.3.2 维护会话状态的规则 67
4.3.3 激活和挂起回调 68
4.3.4 方法实现小结 71
4.3.5 一个简单的
有状态会话Bean 71
4.3.6 会话Bean的生命
周期流程图 79
4.4 小结 81
第5章 将会话Bean发布
为Web服务 83
5.1 Web服务概念 83
5.1.1 Web服务标准 85
5.1.2 XML文档和平台
无关性 88
5.2 实现Web服务 89
5.2.1 JAX-RPC服务
端点接口 90
5.2.2 WSDL和XML/Java
映射 91
5.2.3 打包和部署暴露Web
服务的会话Bean 91
5.3 实现Web服务客户 92
5.4 小结 94
第6章 实体Bean介绍 95
6.1 持久化概念 95
6.2 何为实体Bean 97
6.3 实体Bean特点 99
6.3.1 实体Bean在失败中
幸免 99
6.3.2 实体Bean实例是
RDBMS视图 99
6.3.3 不同实体Bean实例
可能代表了同一
RDBMS纪录 101
6.3.4 池化实体Bean实例 101
6.3.5 持久化实体Bean的
两种方式 104
6.3.6 创建和删除
实体Bean 104
6.3.7 能够查找实体Bean 106
6.3.8 不使用EJB也能够
修改实体Bean持有的
数据 107
6.4 实体上下文 107
6.4.1 getEJBLocalObject()
和getEJBObject() 108
6.4.2 getPrimaryKey() 108
6.5 小结 109
第7章 开发Bean管理持久化
实体Bean 111
7.1 实体Bean编程基础 111
7.2 Bean管理持久化实例
——银行Account 116
7.2.1 Account.java 117
7.2.2 AccountLocal.java 118
7.2.3 AccountHome.java 119
7.2.4 AccountLocalHome.java 120
7.2.5 AccountPK.java 121
7.2.6 AccountBean.java 122
7.2.7 AccountException.java 133
7.2.8 Client.java 134
7.2.9 部署描述符 136
7.2.10 具体容器的部署
描述符 137
7.2.11 配置数据库 137
7.3 运行客户应用 138
7.3.1 服务器端输出 138
7.3.2 客户端输出 139
7.4 BMP实体Bean的生命周期 139
7.5 小结 141
第8章 开发容器管理持久化
实体Bean 143
8.1 CMP实体Bean的特点 143
8.1.1 需要实现CMP
实体Bean的子类 143
8.1.2 CMP实体Bean不存在
持久化域 145
8.1.3 CMP中的setter、
getter方法定义在
实体Bean子类中 145
8.1.4 CMP实体Bean存在
抽象持久化模式 147
8.1.5 CMP实体Bean存在
查询语言 148
8.1.6 CMP实体Bean可以
存在ejbSelect()方法 149
8.2 CMP实体Bean组件的
实现指南 150
8.3 CMP实例——产品系列 152
8.3.1 Product.java 153
8.3.2 ProductLocal.java 154
8.3.3 ProductHome.java 155
8.3.4 ProductLocalHome.
java 156
8.3.5 ProductPK.java 157
8.3.6 ProductBean.java 158
8.3.7 部署描述符 162
8.3.8 具体容器的部署
描述符 165
8.3.9 Client.java 166
8.4 运行客户应用 168
8.5 CMP实体Bean的生命周期 168
8.6 小结 169
第9章 消息驱动Bean介绍 171
9.1 使用消息驱动Bean的动机 172
9.2 Java消息服务 173
9.2.1 消息域 174
9.2.2 JMS API 175
9.3 集成JMS和EJB 178
9.4 开发消息驱动Bean 181
9.4.1 语义 181
9.4.2 一个简单实例 183
9.5 高级概念 187
9.6 基于JMS的消息
驱动Bean陷阱 190
9.6.1 消息顺序 190
9.6.2 错过调用
ejbRemove() 190
9.6.3 坏消息 191
9.6.4 如何将结果返回
给消息生产者 193
9.6.5 异步方法调用 196
9.7 小结 197
第10章 扩充EJB组件的功能 199
10.1 从其他EJB中调用EJB 199
10.1.1 默认JNDI查找 200
10.1.2 理解EJB引用 200
10.2 资源工厂 202
10.3 环境属性 204
10.4 理解Handle 206
10.5 小结 207

第3篇 高级EJB概念

第11章 EJB最佳实践 211
11.1 何时使用EJB 211
11.2 如何选用同EJB协同
工作的Web应用框架 213
11.3 在EJB项目中实施MDD 215
11.4 在EJB项目中
实施极限编程 216
11.5 测试EJB 218
11.5.1 EJB单元测试 218
11.5.2 借助于框架完成EJB的
单元测试 219
11.6 如何在EJB中实现客户端
回调功能 221
11.6.1 JMS 221
11.6.2 远程对象调用 221
11.6.3 Web服务 221
11.7 选用Servlet或无状态会话
Bean作为服务Endpoint 222
11.8 在EJB项目中考虑
使用AOP技术 222
11.8.1 AOP 222
11.8.2 何时在EJB应用中
使用AOP 223
11.9 反射、动态代理和EJB 224
11.10 将EJB部署到不同
应用服务器 225
11.11 调试EJB 226
11.12 EJB中的继承和代码复用 227
11.13 在EJB中实现Singleton 228
11.14 何时在EJB中使用XML 229
11.15 选择消息或RMI-IIOP的
时机 230
11.16 小结 232
第12章 事务 233
12.1 使用事务的动机 234
12.1.1 原子操作 234
12.1.2 网络或机器失败 235
12.1.3 多用户共享数据 235
12.2 事务带来的优势 236
12.3 事务模型 238
12.3.1 平面事务 239
12.3.2 嵌入式事务 240
12.3.3 其他事务模型 241
12.4 事务在EJB中的使用 241
12.4.1 底层事务系统抽象 241
12.4.2 声明式、编程式
及客户发起的事务 242
12.4.3 选择事务风格 244
12.5 容器管理事务 246
12.6 EJB中的编程式事务 251
12.6.1 CORBA对象事务
服务 252
12.6.2 Java事务服务 252
12.6.3 Java事务API 252
12.6.4 声明式和编程式
事务示例 254
12.7 客户代码使用事务 256
12.8 事务隔离 257
12.8.1 并发控制的必要性 257
12.8.2 脏读问题 258
12.8.3 不可重复读问题 260
12.8.4 幻影读问题 260
12.8.5 事务隔离小结 261
12.8.6 隔离和EJB 261
12.8.7 悲观和乐观
并发控制 262
12.9 分布式事务 262
12.9.1 持久性和2PC协议 263
12.9.2 事务通信协议和事务
上下文 264
12.10 设计EJB中的事务会话 265
12.11 J2EE活动服务
和扩展事务 267
12.12 小结 268
第13章 安全性 269
13.1 介绍 270
13.1.1 侵害、弱点和风险 270
13.1.2 控制 271
13.2 Web应用的安全性 272
13.2.1 Web应用的认证 273
13.2.2 授权 274
13.2.3 机密性和集成性 274
13.3 理解EJB安全性 275
13.3.1 EJB应用的认证 275
13.3.2 EJB中的授权 284
13.3.3 安全性传播 291
13.4 安全性互操作 293
13.4.1 基于SSL的IIOP 293
13.4.2 CSIv2 293
13.5 Web服务中的安全性 295
13.5.1 端对端的安全性 296
13.5.2 XML数字签名和
XML加密 297
13.5.3 SAML 299
13.5.4 WS-Security 300
13.6 小结 302
第14章 EJB Timer 303
14.1 任务调度 303
14.2 EJB和任务调度 304
14.3 EJB Timer服务 305
14.3.1 Timer服务API 305
14.3.2 EJB同Timer服务的
交互 308
14.4 Timer实例——
CleanDayLimitOrdersEJB 309
14.4.1 CleanDayLimitOrdersEJB
的远程接口 309
14.4.2 CleanDayLimitOrdersEJB
的Bean类 310
14.4.3 CleanDayLimitOrdersEJB
的Home接口 312
14.4.4 CleanDayLimitOrdersEJB
的部署描述符 312
14.4.5 CleanDayLimitOrdersEJB
的客户 313
14.4.6 运行客户 314
14.5 EJB Timer服务的优缺点 315
14.6 小结 316
第15章 BMP和CMP关系 317
15.1 CMP和BMP的区别 318
15.2 基数 318
15.2.1 1:1关系 319
15.2.2 1:N关系 323
15.2.3 M:N关系 326
15.3 方向 333
15.3.1 实现BMP中的方向 333
15.3.2 实现CMP中的方向 334
15.3.3 方向可能不会反映到
数据库模式 336
15.3.4 使用双向还是单向 337
15.4 延迟装载 337
15.5 聚合和合成关系、
级联删除 338
15.6 关系和EJB-QL 340
15.7 递归关系 340
15.8 循环关系 341
15.9 引用完整性 342
15.10 小结 345
第16章 持久化最佳实践 347
16.1 实体Bean同其他持久化
机制比较 347
16.1.1 控制 348
16.1.2 获取数据 348
16.1.3 过程式与面向对象
(OO)的对比 349
16.1.4 缓存 349
16.1.5 实施模式独立性 349
16.1.6 移植 350
16.1.7 RAD 350
16.2 选择BMP还是CMP 351
16.2.1 代码简化和RAD 351
16.2.2 性能 351
16.2.3 Bug 351
16.2.4 控制 352
16.2.5 应用服务器和数据库
独立性 352
16.2.6 关系 353
16.2.7 学习曲线和代价 353
16.3 为实体Bean选择合适的
粒度 353
16.4 持久化提示和技巧 354
16.4.1 注意O/R间的矛盾 354
16.4.2 硬编码和
软编码SQL 354
16.4.3 何时使用存储过程 355
16.4.4 规范化和反规范化 357
16.4.5 使用EJB对象模型
驱动数据模型 358
16.4.6 遵循优秀的数据设计
过程 358
16.4.7 使用代理主键 359
16.4.8 理解数据库更新
操作带来的影响 360
16.4.9 版本化EJB组件 360
16.4.10 使用遗留
数据库设计 361
16.4.11 处理大结果集 366
16.5 小结 367
第17章 EJB集成 369
17.1 研究集成的必要性 369
17.2 EJB和集成 370
17.3 J2EE连接器架构 371
17.3.1 引入J2EE连接器的
理由 371
17.3.2 资源适配器同J2EE
组件交互 373
17.3.2 资源适配器同应用
服务器交互 374
17.4 J2EE连接器API 375
17.4.1 javax.resource包 376
17.4.2 javax.resource.cci包 376
17.4.3 javax.resource.spi包 378
17.4.4 javax.resource.spi.
endpoint包 379
17.4.5 javax.resource.spi.
security包 380
17.4.6 javax.resource.
spi.work包 380
17.5 系统契约 381
17.5.1 生命周期管理 381
17.5.2 连接管理 382
17.5.3 安全性管理 384
17.5.4 事务管理 386
17.5.5 工作管理 390
17.5.6 外来消息管理 391
17.6 连接器实例——
OutboundLoanRA 392
17.6.1 实例架构 393
17.6.2 JavaLoanApp.java 394
17.6.3 LoadApp.dll 395
17.6.4 OutboundLoanRA 395
17.6.5 LoanRatesEJB 414
17.6.6 LoanRatesClient 417
17.6.7 运行客户 417
17.6.8 扩展
OutboundLoanRA 419
17.7 集成最佳实践——
使用合适的技术 420
17.7.1 何时使用JMS和
基于JMS的MDB 420
17.7.2 何时使用J2EE
连接器 420
17.7.3 何时使用
Java Web服务 421
17.8 小结 421
第18章 EJB性能调优 423
18.1 提前关注 423
18.2 从性能角度看待
有状态对无状态 424
18.3 如何借助于容量规划
来保证响应时间 426
18.4 使用会话外观改善性能 427
18.5 选择本地接口
还是远程接口 428
18.6 区分资源 429
18.7 无状态会话Bean调优 430
18.8 有状态会话Bean调优 430
18.9 实体Bean调优 431
18.10 MDB调优 435
18.11 Java虚拟机调优 436
18.12 其他调优技巧 437
18.13 正确选用EJB服务器 438
18.14 小结 439
第19章 群集 441
19.1 大型系统概述 441
19.1.1 何为大型系统 442
19.1.2 基本术语 443
19.1.3 区分群集 444
19.2 装备群集EJB 447
19.2.1 如何群集EJB 447
19.2.2 幂等性概念 448
19.2.3 群集无状态
会话Bean 449
19.2.4 群集有状态
会话Bean 451
19.2.5 群集实体Bean 452
19.2.6 群集MDB 455
19.3 其他EJB群集问题 455
19.3.1 初次接触 455
19.3.2 初始访问逻辑 456
19.4 小结 456
第20章 正确启动EJB项目 457
20.1 确定业务需求 457
20.2 J2EE是否适合项目 458
20.3 确定项目成员 461
20.4 设计完整的对象模型 461
20.5 实现单个垂直切片 462
20.6 选择应用服务器 463
20.7 划分团队 464
20.8 工具投资 466
20.9 采用标准构建过程 466
20.10 小结 466
第21章 选择EJB服务器 467
21.1 J2EE标准兼容性 468
21.2 插入式JRE 468
21.3 转换工具 468
21.4 复杂映射 468
21.5 第三方JDBC驱动支持 468
21.6 延迟装载 469
21.7 延迟数据库写入 469
21.8 插入式持久化提供商 469
21.9 基于内存的数据缓存 469
21.10 集成层支持 470
21.11 伸缩性 470
21.12 高可用性 470
21.13 安全性 470
21.14 IDE集成 471
21.15 UML编辑器集成 472
21.16 智能负载均衡 472
21.17 透明地进行无状态容错 472
21.18 群集 472
21.19 Java管理扩展(JMX) 473
21.20 管理支持 473
21.21 热部署 473
21.22 实例池 473
21.23 自动生成EJB组件 474
21.24 完全关机 474
21.25 分布式事务 474
21.26 实时部署 474
21.27 高端消息架构 475
21.28 可选的EJB组件 475
21.29 Web服务 475
21.30 工作流 475
21.31 Open Source 476
21.32 专业化服务 476
21.33 技术之外的考虑 477
21.34 小结 477
第22章 EJB-J2EE集成——构建
完整的应用 479
22.1 业务问题 479
22.2 预览最终网站 480
22.3 技术需求 483
22.3.1 业务逻辑层 484
22.3.2 前端表示层 489
22.4 示例代码 493
22.5 小结 501
附录A RMI-IIOP和JNDI教程 503
A.1 Java RMI-IIOP 504
A.1.1 远程方法调用 504
A.1.2 远程接口 506
A.1.4 远程对象实现 507
A.1.5 存根和骨架 508
A.2 对象序列化和参数传递 510
A.2.1 传值 510
A.2.2 对象序列化 510
A.2.3 何时使用transient
关键字 512
A.2.4 对象序列化
和RMI-IIOP 512
A.2.5 Java命名
和目录接口 514
A.2.6 命名和目录服务 514
A.2.7 命名和目录存在的
问题 516
A.2.8 进入JNDI 516
A.2.9 JNDI的优势 517
A.2.10 JNDI架构 517
A.2.11 JNDI概念 518
A.2.12 JNDI编程 521
A.3 集成RMI-IIOP和JNDI 523
A.3.1 将RMI-IIOP服务器
绑定到JNDI 524
A.3.2 借助于JNDI查找
RMI-IIOP服务器 524
A.4 小结 525
附录B CORBA互操作 527
B.1 何谓CORBA 527
B.2 关注CORBA的意义 528
B.3 理解CORBA工作机理 529
B.4 OMG接口定义语言 530
B.5 OMG IDL映射到具体语言 532
B.6 CORBA提供的服务 533
B.7 引入RMI-IIOP的必要性 534
B.7.1 实现RMI与CORBA
互操作的必要性 534
B.7.2 合并CORBA
与RMI 535
B.8 集成RMI和CORBA的
过程 538
B.8.1 RMI-IIOP客户同
CORBA对象实现 538
B.8.2 CORBA客户同RMI-IIOP
对象实现 539
B.8.3 借助于RMI-IIOP
和CORBA引导 539
B.9 宏伟蓝图——集成CORBA
和EJB 540
B.9.1 CORBA-EJB互操作的
局限性 540
B.9.2 示例代码 540
B.10 小结 542
附录C 部署描述符参考指南 543
C.1 如何阅读XML Schema 543
C.2 头和根元素 544
C.3 定义会话Bean 545
C.4 定义实体Bean 546
C.5 定义消息驱动Bean 549
C.6 定义Timer Bean 551
C.7 定义J2EE Web服务 551
C.8 定义环境属性 553
C.9 定义EJB引用 553
C.10 定义安全性 555
C.11 定义资源工厂 556
C.12 定义关系 558
C.13 定义<assembly-descriptor> 560
附录D EJB查询语言(EJB-QL) 565
D.1 EJB-QL概述 565
D.1.1 简单实例 566
D.1.2 关系的威力 567
D.2 EJB-QL语法 567
D.2.1 FROM从句 568
D.2.2 WHERE从句 569
D.2.3 SELECT从句 571
D.2.4 使用聚合函数 574
D.2.5 ORDER BY从句 574
D.2.6 Boolean表 575
D.3 小结 576
附录E EJB快速参考指南 579
E.1 会话Bean流程图 579
E.1.2 无状态会话
Bean流程图 580
E.1.2 有状态会话Bean
流程图 581
E.2 实体Bean流程图 583
E.3 EJB API参考 586
E.3.1 EJBContext 586
E.3.2 EJBHome 587
E.3.3 EJBLocalHome 588
E.3.4 EJBLocalObject 588
E.3.5 EJBMetaData 589
E.3.6 EJBObject 589
E.3.7 EnterpriseBean 590
E.3.8 EntityBean 590
E.3.9 EntityContext 593
E.3.10 Handle 594
E.3.11 HomeHandle 594
E.3.12 MessageDrivenBean 594
E.3.13 MessageDrivenContext 595
E.3.14 SessionBean 595
E.3.15 SessionContext 596
E.3.16 SessionSynchronization 597
E.3.17 TimedObject 597
E.3.18 Timer 598
E.3.19 TimerHandle 598
E.3.20 TimerService 599
E.4 异常参考 600
E.5 事务参考 601

 
 
 
Copyright ©1998~2004 华储网. All rights reserved。
To comment on this site,E-mail :
webmaster@huachu.com.cn