J2EE是使用基于Web的企业应用开发的标准体系结构。Enterprise JavaBeans(简称EJB)组件技术是J2EE体系结构的重要组成部分。本书讲述了如何使用EJB组件体系结构进行企业开发。本书分为两篇。第一篇重点讲述了EJB 2.0规范。首先讲述了J2EE体系结构,以及EJB组件技术在J2EE体系结构中的作用。然后介绍实体Bean、会话Bean和消息驱动Bean,这三种Bean是了解编写每种类型的Bean所需要的基础知识,包括示例和详细的Bean的生命周期图表。然后讲述了高级EJB概念,包括事务管理、安全性以及EJD设计模式。第二篇主要介绍WebSphere环境下的EJB编程。包括VisualAge for Java开发工具的介绍,以及如何使用VisualAge for Java开发实体Bean和会话Bean。这部分重点讲述了一些高级功能,包括定制Finder方法、Access Bean(访问Bean)的使用以及开发,并且以一个综合的实例(内容管理系统)阐述了三层结构和EJB的结合使用。在附录部分介绍了EJB 2.0 API以及部署描述符的使用。\r\n 本书适合J2EE系统设计人员、EJB开发人员、EJB部署人员以及对EJB技术感兴趣的读者阅读。
第一篇 Enterprise JavaBeans基础\r\n\r\n第一章 企业应用开发与J2EE\r\n\r\n1.1 分布式计算介绍\r\n1.1.1 分布式计算的概念\r\n1.1.2 构成分布式计算的一些基本要素\r\n1.1.3 软件组件技术介绍\r\n1.2 企业应用开发模型\r\n1.2.1 传统Client/Server系统的两层体系结构\r\n1.2.2 企业应用开发的多层体系结构\r\n1.2.3 基于组件的分布式系统开发规范与平台\r\n1.3 J2EE标准\r\n1.3.1 什么是J2EE\r\n1.3.2 J2EE体系结构介绍\r\n1.3.3 J2EE组件\r\n1.3.4 J2EE客户端\r\n1.3.5 J2EE技术\r\n1.4 EJB与企业应用集成(EAI)\r\n1.4.1 电子商务就是EAI \r\n1.4.2 企业应用分割带来的问题\r\n1.4.3 什么是EAI\r\n1.4.4 EAI的目标\r\n1.4.5 EAI的类型\r\n1.4.6 EAI中间件技术\r\n1.4.7 EAI架构模式\r\n1.4.8 EJB、应用程序服务器与应用程序集成(EAI)\r\n\r\n第二章 Entetprise JavaBeans概述\r\n\r\n2.1 什么是EJB\r\n2.1.1 EJB的定义\r\n2.1.2 EJB技术规范目标\r\n2.2 为什么选择EJB\r\n2.3 EJB中的角色\r\n2.3.1 角色定义\r\n2.3.2 EJB角色间的关系\r\n2.4 EJB的种类\r\n2.4.1 会话Bean(Session Bean)\r\n2.4.2 实体Bean(Entity Bean)\r\n2.4.3 消息处理Bean\r\n2.5 Enterprise JavaBeans和JavaBeans的关系\r\n2.6 Enterprise JavaBeans的体系结构\r\n2.6.1 相关概念\r\n2.6.2 体系结构\r\n2.7 理解EJB组件\r\n2.7.1 Home接口\r\n2.7.2 Home接口中的方法\r\n2.7.3 容器\r\n2.7.4 Enterprise JavaBean\r\n2.7.5 Remote Interface\r\n2.7.6 EJBObject\r\n2.8 会话Bean\r\n2.8.1 会话Bean的交换\r\n2.8.2 活化和钝化\r\n2.8.3 会话Bean的状态管理\r\n2.9 实体Bean\r\n2.9.1 实体Bean的角色\r\n2.9.2 实体Bean和会话Bean的比较\r\n2.9.3 Finder方法\r\n2.9.4 主键\r\n2.9.5 实体Bean的内外存交换\r\n2.9.6 自管理的持久性\r\n2.9.7 容器管理的持久性\r\n2.10 EJB的配置和部署\r\n2.10.1 EJB部署描述符顶级元素\r\n2.10.2 部署描述符\r\n2.10.3 EJB Jar文件\r\n2.10.4 EJB部署过程\r\n2.10.5 区分EJB开发的角色\r\n2.11 EJB异常类型\r\n\r\n第三章 Session Bean组件\r\n\r\n3.1 概述\r\n3.1.1 有状态会话Bean\r\n3.1.2 无状态会话Bean\r\n3.1.3 会话Bean的客户端视图\r\n3.2 会话Bean客户端接口\r\n3.2.1 会话Bean远程接口\r\n3.2.2 会话Bean本地接口\r\n3.2.3 会话Bean的Home接口\r\n3.2.4 会话Bean的本地Home接口\r\n3.3 无状态会话Bean\r\n3.3.1 无状态会话Bean的生命周期\r\n3.3.2 无状态会话Bean的Bean类\r\n3.3.3 无状态会话Bean上下文设置\r\n3.3.4 无状态会话Bean的创建与删除\r\n3.4 有状态会话Bean\r\n3.4.1 有状态会话Bean的生命周期\r\n3.4.2 有状态会话Bean的Bean类\r\n3.4.3 有状态会话Bean的创建与删除\r\n3.4.4 有状态会话Bean的钝化与激活\r\n3.4.5 有状态会话Bean小结\r\n3.5 从EJB会话Bean访问EJB实体Bean\r\n3.6 小结\r\n\r\n第四章 实体Bean组件\r\n\r\n4.1 实体Bean概述\r\n4.2 实体Bean客户端接口\r\n4.2.1 实体Bean远程接口\r\n4.2.2 实体Bean本地接口\r\n4.2.3 实体Bean的Home接口\r\n4.2.4 实体Bean的本地Home接口\r\n4.3 介绍BMP实体Bean\r\n4.3.1 BMP实体Bean的生命周期\r\n4.3.2 BMP实体Bean上下文的设置与取消设置\r\n4.3.3 BMP实体Bean的查找\r\n4.3.4 BMP实体Bean的创建与删除\r\n4.3.5 BMP实体Bean的钝化与激活\r\n4.3.6 BMP实体Bean的存储与加载\r\n4.3.7 BMP实体Bean小结\r\n4.4 介绍CMP实体Bean\r\n4.4.1 EJB 2.0与CMP\r\n4.4.2 CMP 2.0模型\r\n4.4.3 容器管理的关系(CMR)\r\n4.4.4 CMP实体Bean的生命周期\r\n4.4.5 CMP实体Bean小结\r\n\r\n第五章 EJB QL:用于CMP查询方法的EJB查询语言\r\n\r\n5.1 概述\r\n5.2 EJB QL定义\r\n5.2.1 抽象模式类型和查询域\r\n5.2.2 查询方法\r\n5.2.3 命名\r\n5.2.4 示例\r\n5.2.5 返回值类型\r\n5.2.6 From语句和导航声明\r\n5.2.7 Where语句和条件表达式\r\n5.2.8 Select语句\r\n5.2.9 Null值\r\n5.2.10 相等语义\r\n5.2.11 限制\r\n5.3 示例\r\n5.3.1 简单查询\r\n5.3.2 有关系的查询\r\n5.3.3 使用输入参数查询\r\n5.3.4 查询实体Bean的值\r\n5.3.5 EJB QL和SQL\r\n5.4 EJB QL BNF\r\n\r\n第六章 消息驱动的Bean组件\r\n\r\n6.1 概述\r\n6.2 消息驱动Bean组件的作用\r\n6.3 消息驱动Bean的客户端视图\r\n6.4 消息驱动Bean实例与其容器之间的关系\r\n6.4.1 必需的MessageDrivenBean接口\r\n6.4.2 必需的javax.jms.MessapeListener接口\r\n6.4.3 MessageDrivenContext接口\r\n6.4.4 消息驱动Bean的ejbCreate()方法\r\n6.4.5 序列化消息驱动Bean方法\r\n6.4.6 消息处理的并发\r\n6.4.7 消息驱动Bean方法的事务上下文\r\n6.4.8 消息确认\r\n6.4.9 消息驱动Bean与目的地的关联\r\n6.4.10 处理异常\r\n6.4.11 遗漏的ejbRemove()调用\r\n6.5 消息驱动Bean状态图\r\n6.6 消息驱动Bean的对象交互图\r\n6.6.1 消息接收:onMessage方法调用\r\n6.6.2 将实例添加到池中\r\n6.6.3 从地中删除实例\r\n6.7 Bean供应商的责任\r\n6.7.1 类和接口\r\n6.7.2 消息驱动Bean类\r\n6.7.3 ejbCreate方法\r\n6.7.4 onMessnge方法\r\n6.7.5 ejbRemove方法\r\n6.8 容器供应商的责任\r\n6.8.1 实现类的生成\r\n6.8.2 消息驱动Bean的部署\r\n6.8.3 非可重入实例\r\n6.8.4 事务范围、安全、异常\r\n\r\n第七章 事务处理\r\n\r\n7.1 事务的概念\r\n7.2 J2EE对事务的支持\r\n7.2.1 Java Transaction Service(JTS)\r\n7.2.2 Java Transaction API(JTA)\r\n7.2.3 EJB事务属性\r\n7.3 隔离\r\n7.3.1 并发控制\r\n7.3.2 并发事务引发的问题\r\n7.3.3 隔离层\r\n\r\n第八章 安全性\r\n\r\n8.1 EJB 1.1安全模型\r\n8.2 EJB安全定制\r\n\r\n第九章 异常\r\n\r\n9.1 异常的种类\r\n9.2 异常处理基础知识\r\n9.3 EJB容器处理异常的方式\r\n9.4 一般的处理异常策略\r\n9.5 EJB异常处理的原则\r\n9.6 应用异常的处理\r\n9.7 处理系统异常\r\n9.8 处理Web层的异常\r\n9.9 真实世界的复杂性\r\n9.10 小结\r\n\r\n第十章 EJB与J2EE设计模式\r\n\r\n10.1 Model-View-Controller模式\r\n10.2 Front Controller模式\r\n10.3 Session Facade模式\r\n10.4 Data Access Object模式\r\n10.5 小结\r\n\r\n第二篇 便用VisualAge for Java开发EJB\r\n\r\n第十一章 介绍VisualAge for Java\r\n\r\n11.1 概述\r\n11.2 集成式开发环境(IDE)\r\n11.3 数据库连接\r\n11.4 企业系统连接\r\n11.5 J2EE开发环境\r\n11.6 EJB页\r\n11.7 容器管理的持久化(Container-Managed Persistence,CMP)\r\n11.8 WebSphere测试环境(WTE,WebSphere Test Environment)\r\n11.9 Deployment(发布)\r\n11.10 测试和调试\r\n11.11 RAD支持\r\n11.12 小组开发环境\r\n\r\n第十二章 EJB开发环境\r\n\r\n12.1 EJB开发环境的功能概述\r\n12.1.1 EJB页\r\n12.1.2 创建EnterpriseBean和AccessBean\r\n12.1.3 在Enterprise Bean中构建数据持久性\r\n12.1.4 生成调度码\r\n12.1.5 验证Enterprise Bean和Access Bean代码\r\n12.1.6 测试Enterprise Bean\r\n12.2 安装和配置VisualAge for Java\r\n12.2.1 安装VisualAge for Java\r\n12.2.2 装入必需的功能部件\r\n12.2.3 将JDBC驱动程序添加到类路径\r\n12.3 EJB开发环境的使用概述\r\n12.4 EJB页\r\n12.4.1 企业Bean窗格\r\n12.4.2 类型/特性窗格\r\n12.4.3 成员窗格\r\n12.4.4 Source窗格\r\n12.5 操作\r\n12.5.1 工具栏的图标\r\n12.5.2 Enterprisc Beans窗格的操作\r\n12.5.3 对类型的操作\r\n12.5.4 对特性菜单的操作\r\n12.5.5 对成员的操作\r\n12.5.6 对Source窗格的操作\r\n12.5.7 对Enterprise Bean的测试\r\n\r\n第十三章 使用VisualAge for Java开发CMP实体Bean\r\n\r\n13.1 CMP开发过程概述\r\n13.2 EJB组(EJB Group)的使用\r\n13.2.1 添加EJB组\r\n13.2.2 从模式或模型创建EJB组\r\n13.2.3 删除EJB组和Enterprise Bean\r\n13.3 添加Enterprise Bean\r\n13.3.1 打开“创建Enterprise Bean智能向导”\r\n13.3.2 创建新的Enterprise Bean\r\n13.3.3 从资源库检索现存的Enterprise Bean\r\n13.3.4 从JAR文件导入Enterprise Bean\r\n13.4 创建和管理CMP字段\r\n13.4.1 添加CMP字段\r\n13.4.2 删除CMP字段\r\n13.5 实例:创建一个简单的CMP实体Bean\r\n13.5.1 理解自动生成的类和接口\r\n13.5.2 理解自动生成的方法\r\n13.6 在企业Bean中添加新的方法\r\n13.7 添加方法到远程接口\r\n13.8 将方法标记为只读\r\n13.9 定制本地接口\r\n13.9.1 定制ejbCreate方法\r\n13.9.2 创建新的ejbCreate方法\r\n13.9.3 添加方法到本地接口\r\n13.10 定义数据库模式\r\n13.10.1 创建模式\r\n13.10.2 创建表和列\r\n13.10.3 创建外键关系\r\n13.10.4 将模式导出到数据库\r\n13.11 映射数据库模式\r\n13.11.1 创建EJB组映射\r\nI3.11.2 创建表映射\r\n13.11.3 编辑特性映射\r\n13.12 将企业Bean映射至数据库表的方法\r\n13.12.1 自顶向下\r\n13.12.2 自底向上\r\n13.12.3 上下向中\r\n13.13 调度\r\n13.13.1 设置EJB调度描述符特性\r\n13.13.2 生成EJB调度类\r\n13.14 小结\r\n\r\n第十四章 使用VisualAge for Java开发BMP实体Bean\r\n\r\n14.1 Bean-Managed Persistence(Bean管理的持久化)\r\n14.2 实例:开发一个BMP实体Bean\r\n14.2.1 创建一个BMP实体Bean\r\n14.2.2 理解生成的类和接口\r\n14.2.3 添加和定义BMP字段\r\n14.2.4 更改键类\r\n14.2.5 Bean类中的方法\r\n14.2.6 实现Bean类中的方法\r\n14.2.7 修改本地接口和远程接口\r\n14.3 小结\r\n\r\n第十五章 使用VisualAge for Java开发Session Bean\r\n\r\n15.1 SessionBean的实现\r\n15.1.1 Session Bean类\r\n15.1.2 远程接口\r\n15.1.3 本地接口\r\n15.2 实例:无状态Session Bean的开发\r\n15.2.1 新建Session Bean\r\n15.2.2 理解自动生成的类型和方法\r\n15.2.3 添加商业方法\r\n15.2.4 设置Session Beand的状态管理属性\r\n15.3 实例:购物车SessionBean\r\n15.3.1 创建购物车Session Bean\r\n15.3.2 定义购物车SessionBean的状态管理属性\r\n15.3.3 代表购物信息的一个类\r\n15.3.4 在Bean类中创建商业方法\r\n15.3.5 将创建的商业方法添加到本地接口或者远程接口\r\n15.4 小结\r\n\r\n第十六章 定制Finder方法进行查询\r\n\r\n16.1 Finder方法概述\r\n16.2 编写定制的Finder方法\r\n16.2.1 BeanFinderHelper接口\r\n16.2.2 BcanFinderObjcct类\r\n16.3 何时使用定制Finder\r\n16.3.1 两种方法的混合使用\r\n16.3.2 定制Finder的替代选择\r\n16.4 Finder方法和事务\r\n16.5 Finder和复杂的关联\r\n16.6 小结\r\n\r\n第十七章 Access Beans(访问Bean)开发\r\n\r\n17.1 Access Bean概述\r\n17.1.1 Acccss Bean的类型\r\n17.1.2 Access Bean的一般特性\r\n17.1.3 Access Bean的一般约定\r\n17.2 JavaBean wrapper\r\n17.2.1 创建Java Bean Wraper\r\n17.2.2 分析生成的Java Bean Wraper\r\n17.3 Copy Helper\r\n17.3.1 创建Copy Heopr访问Bean\r\n17.3.2 分析生成的Copy Helper访问Bean\r\n17.4 Rowset\r\n17.4.1 创建Rowset访问Bean\r\n17.4.2 分析生成的Rowset访问Bean\r\n17.5 在客户端编程中使用Access Bean\r\n\r\n第十八章 继承\r\n\r\n18.1 继承概述\r\n18.1.1 为继承创建映射\r\n18.1.2 EJB继承的特性\r\n18.1.3 标准Java继承的特性\r\n18.2 实例:使用EJB继承创建Enterprise Bean\r\n18.3 使用Java继承来开发企业Bean\r\n18.4 小结\r\n\r\n第十九章 关联\r\n\r\n19.1 实例:创建1:m关联\r\n19.1.1 创建实体Bean:Company和Product\r\n19.1.2 添加关联\r\n19.1.3 生成的代码\r\n19.1.4 定义数据库模式\r\n19.1.5 定义外键关系\r\n19.1.6 映射模式和映射关联\r\n19.2 实例:创建m:m关联\r\n\r\n第二十章 客户端编程\r\n\r\n20.1实例:查询图书内容\r\n20.2 使用Access Bean来访问EJB\r\n\r\n第二十一章 实例:网站内容管理系统\r\n\r\n21.1 介绍内容管理系统\r\n21.2 功能分析\r\n21.2.1 栏目管理\r\n21.2.2 页面管理\r\n21.2.3 内容浏览\r\n21.3 系统设计\r\n21.3.1 抽取对象\r\n21.3.2 设计数据库\r\n21.3.3 设计模式\r\n21.4 实现方案\r\n21.5 程序讲解\r\n21.5.1 Servlet的父类\r\n21.5.2 删除栏目(Servlet程序)\r\n21.5.3 编辑栏目(Servlet程序)\r\n21.5.4 查看栏目内容(Servlet程序)\r\n21.5.5 查看栏目列表(Servlet程序)\r\n21.5.6 新建栏目(Servlet程序)\r\n21.5.7 删除文章(Servlet程序)\r\n21.5.8 编辑文章(Servlet程序)\r\n21.5.9 查看文章内容(Servlet程序)\r\n2.5.10 查看文章列表(Servlet程序)\r\n21.5.11 新建文章(Servlet程序)\r\n21.5.12 浏览文章内容(Servlet程序)\r\n21.5.13 浏览文章列表(Servlet程序)\r\n21.5.14 编辑栏目(JSP页面)\r\n21.5.15 查看栏目列表(JSP页面)\r\n21.5.16 新建栏目(JSP页面)\r\n21.5.17 编辑文章(JSP页面)\r\n21.5.18 查看文章列表(JSP页面)\r\n21.5.19 新建文章(JSP页面)\r\n21.5.20 浏览文章内容(JSP页面)\r\n21.5.21 浏览文章列表(JSP页面)\r\n21.6 小结\r\n\r\n附录A EJB API 2.0\r\n附录B EJB 1.1部署描述符
互联网技术的蓬勃发展使得越来越多的企业应用向Browser/Server模式转化。Sun公司的Sun ONE(open Net Environmem,开放服务网络环境)和Microsoft公司的.NET是两大Web服务技术体系。J2EE是Sue ONE体系结构的组成部分,是一个平台和编程模型,用于构造Java企业系统,这样的系统可以通过不同生产商的底层企业系统框架来实现。
Enterprise JavaBeans(EJB)是J2EE体系结构的重要组成部分,也体现了J2EE框架的特点。EJB是服务器端的可重用的组件模型,可以大大提高开发效率。遵循Sun公司发布的EJB规范,使得开发企业应用系统变得更加容易,可以在一个支持EJB规范的开发环境中开发应用系统,然后部署到其他厂商提供的EJB运行环境中。
本书的第一篇介绍J2EE架构和EJB体系结构、EJB的开发以及EJB高级特性。J2EE平台使用了一个多层的分布式的应用程序模型。E用是运行于服务器端的Web层组件,也是EAI(企业应用集成)的设计和实施中常用的事务性中间件。EJB2.0定义了三种E用:会话Bean、实体Bean和消息驱动Bean。在这部分重点介绍了E用组件体系结构、EJB开发与部署、应用客户端开发和EJB异常处理等。本书还讨论了更高级的EJB话题,如EJB事务管理和EJB安全性等。
EJB2.0中的新增特性如CMR(容器管理的关系)以及EJB QL(EJB查询语言)在书中都得到了重点的讲述。使用CMR字段,可以管理EJB之间的关系。使用EJB QL可以增强检索EJB的功能,在方便编码的同时可以减轻EJB服务器的负载,提高检索的效率。
设计模式(Design Pattern)是不断发展和改进的设计方案的一种抽象,它反映了软件设计人员为了提高软件重用性和灵活性而得到的一种设计结构。在EJB的使用过程中发展出了许多优秀的设计模式,包括著名的Model-View-Controller模式、Front Controller模式、Session Facade模式和Data Access Object模式等。书中介绍了这几种模式,读者可以根据这些模式发展和组合出更多的模式,不仅提高了代码的重用,而且可以实现设计的重用。
本书的第二篇介绍了IBM公司的WebSphere环境下的EJB开发与部署。IBM WebSphere是因特网的基础架构软件,它使企业能够开发、部署和集成新一代电子商务应用(如B2B的电子交易),并且支持从简单的Web发布到企业级事务处理的商务应用。IBM公司的VisualAge for Java提供了一个集成的EJB开发和测试环境。通过VisualAge for Java,可以快速而使捷地开发EJB组件,提供了可视化的界面来管理开发过程;可以方便地将EJB组件持久化到数据库中,建立起EJB组件和数据库的映射。VisualAge for Java还提供了独特的功能,可以定制Finder方法,创建对EJB的查询;提供了对EJB之间进行继承的特性,获得了更高程度的重用性;提供了Access Bean(访问Bean),使得编写客户端程序变得更加容易。
有关本书的技术讨论,可以发邮件到washing_lhb@sina.com。
本书由李华厢、李水根编著。在编著的过程中,柳振梁、王福水、黎晓冬、褚洪峰等人参与了大量的工作,特别是得到了彭小梅的大力鼓励和技术上的支持,顾有松教授和周剑平博士对本书的完成给予了很多鼓励,在此表示衷心感谢:
由于作者水平所限,谬误之处在所难免,望读者批评指正。
编者
无封面