标题：EJB3基础教程
内容提要
本书从EJB3最基本的内容讲起，接着逐步讲解了EJB3应用程序开发的整个过程，涉及EJB3规范的各个方面，并将许多实践经验融入整个EJB架构，提供了对EJB3架构和EJB3编程全面的实战性指导，充分体现了EJB3强大的功能和易于使用的特点。
本书主要面向Java和J2EE开发人员。
编辑推荐
世界级EJB专家全力以赴 ，透彻易读，覆盖全面，Amazon四星图书。
“EJB3终于满足了开发人员的需要，现在正是阅读本书的大好时机。”
——FloydMarinescu，InfoQ．com创始人，TheServerSide．om创始人，EJBDesignPatterns一书作者
“我发现这是一本极有价值的书。本书易懂且内容全面，是从事EJB3开发一个很好的起点。”
——-Javalobby
EJB3是EJB技术的里程碑，也是JavaEE平台历史上最重大的进展之一。它吸取了Spring使用POJO和依赖注入的思想，并以Hibernate为基础引入JPA。取代了此前EJB中最为人诟病的实体Bean。与此同时，它保留了EJB原有的强大功能。通过这样的兼容并蓄，EJB3实现了涅檠，如今，它不仅获得了各主流厂商的普遍支持。而且赢得开源Java社区的广泛欢迎，再次成为Java企业级开发的明星。
本书由Oracle和BEA公司的EJB产品核心开发人员撰写，权威性毋庸置疑。书中全面而细致地讲解了EJB3架构，包括会话Bean、消息驱动Bean、事务支持、性能、测试和部署等等，并着重讨论了EJB3中的新特性一lPA，通过实例展示了如何使用EJB来开发功能强大的企业级应用程序。作者在讲述中融入了其他地方很难找到的许多实践经验和实际技巧。而本书的通俗易读更是得到了各大技术媒体和众多读者广泛认可。
作者简介
RaghuR.Kodali，是世界级的EJB专家，OASISSOABlueprints规范技术委员会成员。他是Oracle公司资深工程师，领导开发Oracle公司EJB产品多年，目前担任OracleApplicationServer顾问产品经理和SOA技术推广官。Kodali在JavaEE社区非常活跃，除了经常在各种世界性技术大会上演讲之外，还是JavaDeveloper'sJournal等杂志的专栏作家。
目录
第1章　EJB3架构简介1.1　EJB简介　
1.1.1　EJB是什么
1.1.2　EJB组件模型　
1.1.3　EJB框架　
1.1.4　EJB核心特性　
1.1.5　EJB规范的发展　
1.1.6　EJB3简化开发模型　
1.1.7　分布式计算模型　
1.1.8　EJB角色
1.2　本书结构　
1.3　准备　
1.3.1　安装GlassFish应用程序服务器的先决条件　
1.3.2　安装GlassFish应用程序服务器　
1.3.3　环境变量设置　
1.3.4　密码文件的创建　
1.3.5　启动和测试GlassFish安装　
1.4　小结　
第2章　EJB3会话bean2.1　简介　
2.2　会话bean简介　
2.2.1　会话bean类型　
2.2.2　何时使用会话bean　
2.3　无状态会话bean　
2.3.1　bean类　
2.3.2　业务接口　
2.3.3　业务方法　
2.3.4　依赖注入　
2.3.5　回调方法　
2.3.6　拦截器　
2.4　有状态会话bean　
2.4.1　bean类　
2.4.2　业务接口　
2.4.3　业务方法　
2.4.4　回调方法　
2.4.5　拦截器　
2.4.6　异常处理　
2.5　会话bean的客户视图　
2.6　会话bean的打包、部署和测试　
2.6.1　先决条件　
2.6.2　编译会话bean　
2.6.3　打包会话bean　
2.6.4　部署会话bean　
2.6.5　编译客户程序　
2.6.6　运行客户程序　
2.7　小结　
第3章　实体和JPA3.1　实体示例　
3.1.1　简单JavaBeanCustomer.java　
3.1.2　简单实体Customer.java　
3.1.3　显示了默认设置的实体Customer.java　
3.1.4　代码要求　
3.1.5　示例：注解实例变量　
3.1.6　示例：注解属性访问方法　
3.1.7　声明主键　
3.1.8　简单主键　
3.1.9　复合主键　
3.1.10　实体示例小结　
3.2　持久化档案　
3.3　EntityManager　
3.3.1　持久化上下文　
3.3.2　获得EntityManager实例　
3.3.3　事务支持　
3.4　实体生存周期　
3.5　O/R映射　
3.5.1　再谈@Table注解　
3.5.2　再谈@Column注解　
3.5.3　复杂映射　
3.6　实体关系　
3.6.1　@OneToOne　
3.6.2　@OneToMany和@ManyToOne　
3.6.3　@ManyToMany　
3.6.4　延迟和预先字段绑定　
3.6.5　层叠操作　
3.7　JPQL
3.7.1　@NamedQuery和@NamedQueries　
3.7.2　绑定查询参数　
3.7.3　动态查询　
3.7.4　批更新和删除操作　
3.7.5　复杂查询　
3.8　向前生成与反向工程　
3.8.1　向前生成产生持久性　
3.8.2　反向工程产生适应性　
3.8.3　哪种方式适用于你的工程　
3.9　示例应用程序CustomerOrderManager　
3.9.1　Customer.java　
3.9.2　CustomerOrder.java　
3.9.3　Address.java　
3.9.4　CustomerOrderManager.java　
3.9.5　CustomerOrderClient.java　
3.9.6　persistence.xml　
3.10　小结　
第4章　高级持久化特性4.1　映射实体继承层次结构　
4.1.1　准备　
4.1.2　实体继承映射策略　
4.1.3　每个类单一表的继承层次结构（InheritanceType.SINGLE_TABLE）　
4.1.4　带有连接子类表的通用基表（InheritanceType.JOINED）　
4.1.5　每个最外层一个表的具体实体类（InheritanceType.TABLE_PER_CLASS）　
4.1.6　O/R实现方式的比较　
4.2　在继承层次结构中使用抽象实体、映射的超类和非实体类　
4.2.1　抽象实体类　
4.2.2　映射的超类（@MappedSuper-class）　
4.2.3　非实体类　
4.2.4　使用嵌入非实体类（@Embeddable和@Embedded）　
4.3　多态关系　
4.4　多态JPQL查询　
4.5　使用原生SQL查询　
4.6　复合主键和嵌套外键　
4.6.1　使用嵌套复合键（@EmbeddedId）　
4.6.2　在实体类上直接暴露复合键类字段（@IdClass）　
4.6.3　使用复合键的映射关系　
4.7　乐观锁定的支持（@Version）　
4.8　自动生成的主键值的支持　
4.9　拦截器：实体回调方法　
4.10　小结　
第5章　EJB3消息驱动bean5.1　简介　
5.2　面向消息的架构　
5.2.1　JMS是什么　
5.2.2　消息应用程序架构　
5.3　使用MDB　
5.3.1　何时使用MDB　
5.3.2　MDB类　
5.3.3　配置属性　
5.3.4　MDB中的依赖注入　
5.3.5　回调方法　
5.3.6　拦截器　
5.3.7　异常处理　
5.3.8　客户视图　
5.4　MDB的打包、部署和测试　
5.4.1　先决条件　
5.4.2　编译会话bean和MDB　
5.4.3　打包会话bean和MDB　
5.4.4　创建JMS和JavaMail资源　
5.4.5　部署会话bean和MDB　
5.4.6　编译客户程序　
5.4.7　运行客户程序　
5.5　小结　
第6章　EJB3和Web服务6.1　简介　
6.2　Web服务是什么　
6.2.1　UDDI　
6.2.2　WSDL　
6.2.3　SOAP　
6.2.4　何时使用Web服务　
6.3　JavaEE和Web服务　
6.3.1　JAX-WS　
6.3.2　JAXB　
6.3.3　JAXR　
6.3.4　SAAJ　
6.3.5　JSR181　
6.4　EJB3无状态会话bean作为Web服务　
6.5　Web服务的打包、部署和测试　
6.5.1　先决条件　
6.5.2　编译会话bean　
6.5.3　打包会话bean　
6.5.4　部署会话bean　
6.5.5　使用GlassFish控制台测试信用卡服务　
6.6　Web服务客户视图　
6.6.1　开发访问Web服务的Java客户程序　
6.6.2　会话bean作为Web服务客户程序　
6.7　小结　
第7章集成会话,实体,消息驱动bean和Web服务7.1　简介　
7.2　应用程序概述　
7.3　应用程序组件和服务　
7.3.1　购物车组件　
7.3.2　搜索外观组件　
7.3.3　顾客外观组件　
7.3.4　订单处理外观组件　
7.3.5　持久化服务　
7.3.6　电子邮件服务　
7.3.7　信用卡服务　
7.3.8　订单处理服务　
7.4　酒类在线应用程序业务处理　
7.5　深入讲解组件/服务　
7.5.1　持久化服务　
7.5.2　顾客外观组件　
7.5.3　搜索外观组件
7.5.4　购物车组件　
7.5.5　订单处理外观组件　
7.5.6　订单处理服务　
7.5.7　电子邮件服务　
7.5.8　信用卡服务　
7.5.9　数据库schema　
7.6　打包、部署和测试应用程序　
7.6.1　先决条件　
7.6.2　部署信用卡服务　
7.6.3　编译持久化单元　
7.6.4　打包持久化单元　
7.6.5　编译业务服务（会话bean和MDB）　
7.6.6　打包业务服务　
7.6.7　汇编应用程序　
7.6.8　创建数据库schema　
7.6.9　创建数据源、JMS资源和Mail资源　
7.6.10　部署应用程序　
7.7　应用程序的简单测试客户程序　
7.8　小结　
第8章　EJB3中的事务支持8.1　事务是什么　
8.1.1　分布式事务　
8.1.2　事务的ACID属性　
8.1.3　JTA　
8.1.4　两阶段提交协议　
8.2　EJB中的事务支持　
8.3　服务模型中的会话bean事务行为　
8.3.1　容器管理的事务分界　
8.3.2　bean管理的事务分界　
8.4　持久化模型中的实体事务行为　
8.4.1　实体如何与事务上下文相关联　
8.4.2　容器管理与应用程序管理的持久化上下文　
8.4.3　事务范围的持久化上下文与扩展的持久化上下文　
8.4.4　JTA与资源本地的Entity-Manager　
8.5　酒类在线应用程序的事务场景　
8.5.1　设置示例　
8.5.2　使用CMT分界的无状态会话bean　
8.5.3　使用BMT分界的有状态会话bean和扩展的持久化上下文　
8.6　小结　
第9章　EJB3性能和测试9.1　测试方法论　
9.1.1　性能标准　
9.1.2　模拟应用程序使用　
9.1.3　定义测试尺度　
9.2　Grinder　
9.3　测试应用程序　
9.4　性能测试　
9.4.1　测试环境　
9.4.2　测试脚本
9.4.3　设置　
9.4.4　初步测试　
9.4.5　样本大小　
9.4.6　校准　
9.4.7　实际测试运行　
9.4.8　分析结果　
9.5　小结　
第10章　把EJB2.x应用程序迁移到EJB310.1　准备　
10.2　会话bean迁移　
10.2.1　EJB2.1会话bean　
10.2.2　EJB2.1的ejb-jar.xml文件
10.2.3　EJB3会话bean类　
10.2.4　迁移EJB2.1会话bean类　
10.2.5　迁移EJB2.1会话bean接口　
10.2.6　迁移EJB2.1会话bean的ejb-jar.xml属性　
10.2.7　迁移EJB2.1的Web服务端点接口　
10.2.8　会话bean迁移包装　
10.3　MDB迁移　
10.4　实体bean迁移　
10.5　EJB客户程序迁移　
10.6　完整的应用程序迁移示例　
10.6.1　EJB2.1应用程序源文件　
10.6.2　EJB3应用程序源文件　
10.7　把我们的应用程序迁移在JavaEE容器之外运行　
10.7.1　EJB3会话bean类运行在EJB容器之外　
10.7.2　容器外部持久化单元的EJB3的persistence.xml文件　
10.7.3　EJB3应用程序管理的EntityManager客户程序　
10.8　小结　
第11章　EJB3部署11.1　部署工具简介　
11.2　部署过程概述　
11.2.1　提供者　
11.2.2　装配者　
11.2.3　部署者　
11.3　JavaEE部署基础结构　
11.3.1　JavaEE服务器　
11.3.2　JavaEE容器　
11.4　JavaEE部署组件　
11.4.1　JavaEE应用程序　
11.4.2　JavaEE模块类型　
11.4.3　库组件　
11.5　应用服务器和平台无关性　
11.5.1　部署工具　
11.5.2　部署计划
11.6　部署角色　
11.6.1　应用程序装配者　
11.6.2　应用程序部署者　
11.7　汇编EJBJAR模块　
11.8　汇编持久化单元　
11.9　小结　
第12章　EJB3客户应用程序12.1　应用程序架构　
12.2　JSF　
12.2.1　JavaEEWeb技术的发展　
12.2.2　JSF架构　
12.2.3　JSF工具和组件　
12.3　使用JSF和EJB开发Web应用程序　
12.3.1　登录页面　
12.3.2　新用户注册页面　
12.3.3　链接页面　
12.3.4　搜索页面
12.3.5　酒类清单页面　
12.3.6　显示选定的酒类详细信息页面　
12.3.7　显示购物车项目页面　
12.3.8　通知页面　
12.4　打包、部署和测试应用程序　
12.4.1　先决条件　
12.4.2　编译和打包JSF应用程序　
12.4.3　汇编酒类商店应用程序　
12.4.4　部署酒类商店应用程序　
12.4.5　运行酒类商店应用程序　
12.5　应用程序客户容器　
12.6　小结　
附录