目录第1部分概述第1章Java2EnterpriseEditionl.3简介1.l企业计算的演化l.2对企业计算的考虑1.3企业计算平台1.3.1CORBA1.3.2.NETl.3.3J2EE1.4J2EE1.3所需的技术1.4.l支持通信的技术1.4.2支持**的技术1.4.3支持表示的技术1.4.4支持业务应用的技术1.4.5支持企业信息系统的技术1.4.6将所有的内容整合到一起1.5J2EE体系结构l.5.l客户层1.5.2表示层1.5.3业务层1.5.4企业信息系统层1.6J2EE体系结构技术上的优点1.6.l互操作性1.6.2与**系统的标准集成1.6.3编程的效率1.6.4分布式组件1.6.5可靠性和性能l.6.6**1.6.7将开发和部署的复杂性减到*少1.7J2EE体系结构与商业相关的优点1.7.1简化应用程序开发1.7.2选择的自由1.7.3较快的上市时间1.7.4较低的开发代价1.7.5应用程序的易管理性1.7.6应用程序的可移植性l.8J2EE开发和部署角色1.9开发一个J2EE应用程序1.10J2EE的缺点1.10.1陡峭的学习曲线1.10.2较高的资源要求1.10.3J2EE应用服务器的费用(较高的基础结构费用)1.10.4较高的维护费用l.10.5避免使用J2EE的场合1.11本章小结第2章EnterpriseJavaBeans2.0简介2.l软件组件模型2.2EnterpriseJavaBeans体系结构2.2.1EnterpriseJavaBeans组件2.2.2关键EJB元素2.2.3EJB容器2.2.4打包和部署工具2.3EJB**2.4EJB的优点2.5EJB的缺点2.6EnterpriseJavaBeans和JavaBeans的区别2.7本章小结第2部分开发EJB第3章示例应用程序概述3.l命名约定3.2关于例程源代码3.3数据库表3.4示例应用程序描述3.4.l无状态会话beau实例3.4.2有状态会话beau示例3.4.3BMP实体beau示例3.4.4CMP实体beau示例3.4.5消息驱动beau实现示例3.5本章小结第4章EJB客户视图4.l分布式对象4.l.1分布式对象的难点4.1.2解决方案4.2JNDI简介4.2.l命名服务4.2.2命名约定4.2.3命名空间4.2.4目录服务4.2.5命名和目录服务的需求4.3客户程序的JNDI4.3.l访问远程对象4.3.2设置JNDI环境属性4.4JNDI和EJB4.4.l利用JNDI访问数据源4.4.2上下文命名约定4.5RMI-IIOP简介4.5.l远程调用中RMI的优点4.5.2RMI-IIOP的优势4.5.3使用RMl-llOP的强制转换要求4.6EJB客户视图4.7远程和本地接口4.7.1远程接口4.7.2本地接口4.8本地和远程接口API4.8.l远程Home接口4.8.2本地Home接口4.8.3远程组件接口4.8.4本地组件接口4.8.5异常4.9远程和本地接口的编写规则4.10创建远程客户程序4.10.1创建远程Home接口4.10.2创建远程组件接口4.10.3创建远程客户应用程序4.11编译执行HelloWorld4.12打包HelloWorld程序4.12.l打包文件4.12.2打包客户:HelloClient4.12.3HelloClient和HelloBean的交互作用4.13使用本地和远程接口4.14程序性能4.15本章小结第5章会话beau简介5.l会话beau的特性5.2会话beau的类型5.2.l无状态会话beau(SLSB)5.2.2有状态会话beau(SFSB)5.3会话beau元素5.3.l会话beau实现类5.3.2SessionBean接口5.3.3SessionContext接口5.3.4助手类5.3.5部署描述符5.4编写会话beau的规则和要求5.4.l编写会话beau类的规则和要求5.4.2编写ejbCreate<Method>(…)方法的规则5.4.3编写业务方法的规则5.5实现会话beau时部署工具的作用5.6打包会话beau5.7部署5.8本章小结第6章开发无状态会话beau6.l无状态会话beau的特征和特性6.2无状态会话beau的生命周期6.3无状态课程表beau应用程序6.3.l步骤1:实现SLSB远程Home接口6.3.2步骤2:实现SLSB远程组件接口6.3.3步骤3���实现SLSB类6.3.4步骤4:实现助手类6.3.5步骤5:编译ScheduleHome.Schedule.ScheduleEJB.ScheduleDAO和ScheduleVO6.3.6步骤6:编写并编译Servlet客户6.3.7步骤7:创建HTML表单页面6.3.8步骤8:将课程表应用程序创建成企业归档文件6.3.9步骤9:将SLSBScheduleEJB打包成ejb-jar文件6.3.10步骤10:打包Web归档文件6.3.11步骤11:部署课程表应用程序6.3.12步骤12:检查部署描述符6.3.13步骤13:运行课程表企业应用程序6.4本章小结第7章开发布状态会话beau7.1SFSB的特征7.2什么时候使用SFSB7.3SFSB的生命周期7.4购物车应用程序的实现7.4.l步骤1:实现远程home接口7.4.2步骤2:实现组件接口7.4.3步骤3:实现SFSB类7.4.4步骤4:编译shoPPingCartHome.shoppingCart和ShoppingCartEJB7.4.5步骤5:编写和编译ShopphgCartClientServlet7.4.6步骤6:创建JSP页面和HTML文件7.4.7步骤7:打包购物车应用程序7.4.8步骤8:打包War文件7.4.9步骤9:部署描述符7.4.10步骤10:部署ShoppingCartAppear7.4.11步骤11:测试程序7.5本章小结第8章实体beau简介8.l概述8.2实体beau的特性8.3实体beau的类型8.4实体beau的生命周期8.4.l不存在状态8.4.2入池状态8.4.3就绪状态8.5实体beau元素8.5.lhome接口和组件接口8.5.2主键类8.5.3实体beau类API8.6实现实体beau类的规则8.7方法实现的规则8.7.l实现ejbCreate和ekbPostCreate方法的规则8.7.2实现ejbFinder方法的规则8.7.3实现ejbHome方法的规则8.7.4实现业务方法的规则8.8BMP实体beau与CMP实体beau的比较8.9实体beau中的并发访问8.10会话beau与实体beau之间的区别8.11对象标识.句柄和主键8.12CMP2.0实体beau中的新特性8.13本章小结第9章开发托管beau式实体beau9.1BMP的特性9.1.l什么时候使用BMP9.1.2使用BMP的动机9.2托管beau式持久性9.2.lbean实例生命周期管理方法9.2.2持久性数据同步方法9.2.3Pool方法9.3BMP应用程序示例9.3.l步骤1:创建home接口9.3.2步骤2:创建远程组件接口9.3.3步骤3:创建实体beau实现类9.3.4步骤4:实现助手类9.3.5步骤5:编译接口.实体beau类和助手类9.3.6步骤6:使用远程接口编写一个servlet客户程序9.3.7步骤7:编译servlet客户9.3.8步骤8:创建HTML表单和JSP文件9.3.9步骤9:打包Web组件9.3.10步骤10:打包Web与Enterprise组件9.3.11步骤11:部署studentApp.ear文件9.3.12步骤12:测试该BMP实体比an学生注册应用程序9.4本章小结第10章CMP2.0:抽象持久性模式和EJBQL10.1CMP2.0实体beau的体系结构10.1.l抽象访问器方法10.1.2抽象持久性模式10.1.3托管容器式持久性域10.l.4托管容器式关系域10.1.5持久性数据访问层10.2EJBQL语言10.2.1EJBQL查询语法10.2.2查找器方法10.2.3tibSelect方法10.2.4查找器方法与ejbselect方法之间的差别10.2.5EJBQL的一些问题10.3CMP实体beau回调方法10.3.lbean生命周期管理方法10.3.2持久性数据同步方法10.3.3pooI方法10.3.4业务方法10.4编写CMP2.0实体beau类的规则10.5编写抽象访问器方法的规则10.6编写相关值类的规则10.7编写ejbselect方法的规则10.8在CMPbeau开发过程中的责任10.8.lbean开发人员10.8.2部署工具10.8.3beau部署商10.9BMP与CMP实体beau的比较10.10CMP2.0实体beau的主键10.11本章小结第11章开发CMP2.0实体beau11.ICMP2.0实体beau的特征11.2CMP实体beau较BMP实体beau的优点11.3CMP2.0实体beau的应用程序示例11.3.l步骤1:实现CMP2.0地址实体beau11.3.2步骤2:实现CMP2.0花名册实体beau11.3.3步骤3:实现CMP2.0学生实体beau11.3.4步骤4:实现JSP客户来测试CMP2.0实体beau11.3.5步骤5:将CMP2.0实体beau打包为ejbdar文件11.3.6步骤6:将JSP打包为Web组件11.3.7步骤7:部署CMP2.0实体beau应用程序例子11.3.8步骤8:测试应用程序例子11.4部署描述符11.5本章小结第12章Java消息服务12.1Java消息服务简介12.2JMS体系结构12.2.1JMS客户12.2.2JMS提供者12.2.3管理对象12.2.4JMS消息12.3通信域模型12.3.l点到点模型12.3.2出版和订阅模型12.3.3消息传送12.3.4可保证的消息传送12.3.5松耦合和异步通信12.4JMS编程模型12.5JMS与EJB的集成12.6本章小结第13章开发消息驱动beau13.1MDB的特征13.2MDB的元素13.2.1MessageDrivenBean接口13.2.2JMS消息类型13.3MDB的生命周期13.4MDB与会话和实体beau的比较13.5编写MDB类及其方法的规则13.5.1MDB类13.5.2ejbCreate方法13.5.3onMessape()方法13.5.4ejdbRemove()方法13.6MDBEJB示例应用程序:RostetMDB13.6.l步骤1:定义和实现消息13.6.2步骤2:实现MDB类13.6.3步骤3:实现助手类13.6.4步骤4:编译RostetMDB.RosterDAO和RosterVO13.6.5步骤5:编写ServletJMS客户MessageSender13.6.6步骤6:实现JMS客户DurableSubscriber13.6.7步骤7:编译JMS客户13.6.8步骤8:打包EJB组件13.6.9步骤9:打包Web组件13.6.10步骤10:将客户打包成Jar文件13.6.11步骤11:部署应用程序13.6.12步骤12:测试程序13.7RosterApp部署描述符13.8本章小结第3部分**专题第14章事务14.l事务及其好处简介14.1.l事务方法和伪代码14.1.2失效的影响14.l.3事务的类型14.1.4事务的好处14.1.5事务的参与者14.2事务模型14.2.l本地事务14.2.2分布式事务14.2.3两阶段提交14.3事务的ACID属性14.4事务属性14.4.1NotSupported14.4.2Required14.4.3Supports14.4.4RequiresNew14.4.5Mandatory14.4.6Nerver14.5通过编程或者声明实现事务14.5.l通过编程划分事务14.5.2通过声明划分事务14.6SFSB.BMP和CMP实体beau的事务行为14.6.l有状态会话beau14.6.2CMP2.0实体beau14.6.3BMP实体beau14.7启动事务14.7.l客户启动的事务14.7.2未规定的事务上下文14.8托管beau式和托管容器式事务划分的比较14.9隔离级别14.9.l脏读14.9.2读值不可复现14.9.3幻像读14.9.4设置隔离级别14.9.5隔离级别的限制14.10事务角色及其职责14.11本章小结第15章EnterpriseJavaBean**15.l理解EJB**模型15.2实现EJB**的角色15.3通过声明实现**15.3.l**角色15.3.2方法许可15.3.3**身份的传递15.4通过编程实现**15.4.l检查调用者的身份15.4.2检查许可15.4.3连接**角色引用和**角色15.4.4部署15.5声明**和编程**的比较15.6实现资源管理器**15.6.l容器初始化认证15.6.2应用初始化认证15.7**的可用性及其限制15.7.lbean类型的**可用性15.7.2EJB客户**限制15.8**互操作性15.9实现**过程中的角色和职责15.9.lbean开发人员15.9.2应用程序装配商15.9.3应用程序部署商15.9.4系统管理员15.9.5EJB容器提供商15.10本章小结第16章EJB设计模式.互操作性和性能16.1EJB设计模式简介16.1.1EJB设计模式和EIS层16.1.2选择一种EJB设计模式16.2数据访问对象16.2.1背景16.2.2问题16.2.3用途16.2.4解决方案16.2.5结构16.2.6参与者及其职责16.2.7策略16.2.8后果16.2.9相关模式16.3值对象16.3.l背景16.3.2问题16.3.3用途16.3.4解决方案16.3.5结构16.3.6参与者及其职责16.3.7策略16.3.8后果16.3.9相关模式16.4值对象装配器16.4.l背景16.4.2问题16.4.3用途16.4.4解决方案16.4.5结构16.4.6参与者及其职责16.4.7策略16.4.8后果16.4.9相关模式16.5值列表处理程序16.5.l背景16.5.2问题16.5.3用途16.5.4解决方案16.5.5结构16.5.6参与者及其职责16.5.7策略16.5.8后果16.5.9相关模式16.6服务定位器16.6.l背景16.6.2问题16.6.3用途16.6.4解决方案16.6.5结构16.6.6参与者及其职责16.6.7策略16.6.8后果16.6.9相关模式16.7会话外观16.7.l背景16.7.2问题16.7.3用途16.7.4解决方案16.7.5结构16.7.6参与者及其职责16.7.7策略16.7.8后果16.7.9相关模式16.8业务代表16.8.1背景16.8.2问题16.8.3用途16.8.4解决方案16.8.5结构16.8.6参与者及其职责16.8.7策略16.8.8后果16.8.9相关模式16.9附加的模式16.10EJB互操作性16.10.l远程调用的互操作性16.10.2事务的互操作性16.10.3命名互操作性16.10.4**互操作性16.11EJB性能问题16.12本章小结第17章将EJB1.1应用程序迁移到EJB2.0容器中17.l迁移选项和方式17.l.l重新将EJB1.1应用程序部署到EJB2.0容器中17.1.2使用适当的本地接口取代远程接口17.l.3重新设计应用程序以充分利用EJB2.017.2EJB1.l的缺点17.2.1会话beau17.2.2实体beau17.2.3托管beau式持久性实体beau17.2.4托管容器式持久性实体beau17.2.5生命周期17.2.6消息驱动beau17.2.7EJB服务器之间的*少互操作性17.3将EJB1.1应用程序迁移到EJB2.0容器中17.3.IEJB1.1实现17.3.2EJB1.1部署描述符17.4EJB2.0实现17.5CMP2对部署描述符17.6带有本地接口的实体beau与相关值对象17.7本章小结第18章装配J2EE在线注册应用程序18.l设计目标18.2使用设计模式18.2.1服务定位器设计模式18.2.2会话外观设计模式18.2.3业务代表设计模式18.2.4数据访问设计模式18.3重构现有的EJB18.3.l无状态会话beau18.3.2有状态会话beau18.3.3CMP2.0实体beau18.3.4消息驱动beau18.3.5servlet客户18.4装配和部署应用程序18.5本章小结18.6*后的思考附录A.l安装要求A.2简要的安装概述A.3设置开发环境A.4设置应用环境A.5使J2SDKEE做好操作准备