本书主要介绍了Enterprise JavaBeans的实际应用技术。在前几章中,详细说明了基础知识、基本概念以及应用程序的打包和配置过程,并且提供了大量实用的代码。在后续章节中,作者为许多问题(如在线目录、仓库管理、自动取款机、安全鉴别和授权、从EJB发送电子邮件、改进数据库性能等)提供了完整的解决方案和程序代码。\r\n 本书配套光盘中提供了所有的源代码、批处理文件和数据文件的副本,并且为每个应用程序提供了.ear文件,以及每个客户程序的编译版本。这些可以使读者在编程时节省大量的时间。\r\n本书针对许多问题提供了完整的解决方案,实用性强,适合各个层次的Enterprise JavaBeans程序员阅读。\r\n\r\n
第1章 J2EE概述 \r\n\r\n1.1 2层体系结构 \r\n1.2 2层体系结构的局限性 \r\n1.3 3层体系结构 \r\n1.4 中间层--J2EE Server(J2EE服务器) \r\n1.4.1 JNDI \r\n1.4.2 鉴别 \r\n1.4.3 JDBC \r\n1.4.4 servlets \r\n1.4.5 JSP \r\n1.4.6 JMS \r\n1.4.7 JTA \r\n1.4.8 EJB \r\n1.5 Enterprise JavaBeans \r\n1.5.1 会话beans \r\n1.5.2 实体beans \r\n1.5.3 永久性 \r\n1.6 开发和配置Enterprise JavaBeans中的角色 \r\n1.6.1 EJB服务器供应商 \r\n1.6.2 EJB容器供应商 \r\n1.6.3 Enterprise bean供应商 \r\n1.6.4 应用程序装配人员 \r\n1.6.5 配置人员 \r\n1.6.6 系统管理人员 \r\n1.7 小结 \r\n第2章 第1个Enterprise JavaBeans程序 \r\n2.1 编写代码 \r\n2.1.1 远程接口 \r\n2.1.2 本地接口 \r\n2.1.3 企业bean \r\n2.2 编译代码 \r\n2.3 创建J2EE应用程序 \r\n2.4 封装HelloWorld \r\n2.5 配置HelloWorld \r\n2.6 为HelloWorld编写客户程序 \r\n2.7 研究客户代码 \r\n2.7.1 查找本地接口 \r\n2.7.2 创建企业bean实例 \r\n2.7.3 调用bean的方法 \r\n2.8 编译客户代码 \r\n2.9 劳动成果\r\n2.10 维护EJB \r\n2.11 小结 \r\n\r\n第3章 简单的无状态会话bean实例 \r\n\r\n3.1 温度转换 \r\n3.1.1 远程接口 \r\n3.1.2 本地接口 \r\n3.1.3 企业bean \r\n3.1.4 封装和配置bean \r\n3.1.5 客户 \r\n3.2 打包和配置bean组 \r\n3.3 州/省缩写核实 \r\n3.3.1 远程接口 \r\n3.3.2 本地接口 \r\n3.3.3 企业bean \r\n3.4 邮政编码/邮局编码确认程序 \r\n3.4.1 远程接口 \r\n3.4.2 本地接口 \r\n3.4.3 企业bean \r\n3.4.4 打包和配置PostalApp \r\n3.4.5 客户 \r\n3.5 DES编码/解码程序 \r\n3.5.1 远程接口 \r\n3.5.2 本地接口 \r\n3.5.3 企业bean \r\n3.5.4 打包bean \r\n3.6 基于64的编码/解码程序 \r\n3.6.1 远程接口 \r\n3.6.2 本地接口 \r\n3.6.3 企业bean \r\n3.6.4 打包和配置 \r\n3.6.5 第1个Crypto客户-加密数据 \r\n3.6.6 第2个Crypto客户-恢复数据 \r\n3.7 小结 \r\n\r\n第4章 简单的有状态会话bean实例 \r\n\r\n4.1 费伯拉希数字 \r\n4.1.1 远程接口 \r\n4.1.2 本地接口 \r\n4.1.3 企业bean \r\n4.1.4 打包和配置bean \r\n4.1.5 客户 \r\n4.1.6 J2EE应用程序客户 \r\n4.1.7 运行J2EE应用程序客户 \r\n4.2 最低/最高温度监视程序 \r\n4.2.1 远程接口 \r\n4.2.2 本地接口 \r\n4.2.3 企业bean \r\n4.2.4 打包和配置 \r\n4.2.5 J2EE客户程序\r\n4.2.6 创建J2EE应用程序客户 \r\n4.3 有状态会话beans的生命周期 \r\n4.3.1 远程接口 \r\n4.3.2 本地接口 \r\n4.3.3 企业bean \r\n4.3.4 打包和配置 \r\n4.3.5 独立运行的客户 \r\n4.3.6 运行客户 \r\n4.4 小结 \r\n\r\n第5章 业务核心??用户 \r\n\r\n5.1 持久性 \r\n5.2 共享访问 \r\n5.3 主键 \r\n5.4 用户记录 \r\n5.4.1 远程接口 \r\n5.4.2 本地接口 \r\n5.4.3 企业bean代码 \r\n5.4.4 打包和配置 \r\n5.4.5 客户 \r\n5.4.6 数据库 \r\n5.4.7 运行客户 \r\n5.5 帐目记录 \r\n5.5.1 远程接口 \r\n5.5.2 本地接口 \r\n5.5.3 企业bean \r\n5.5.4 打包bean \r\n5.5.5 作为bean客户的servlet \r\n5.5.6 打包和配置servlet \r\n5.5.7 测试servlet \r\n5.6 用户企业bean \r\n5.7 用户客户程序 \r\n5.8 帐号Servlet \r\n5.9 小结 \r\n\r\n第6章 在线目录和库存清单 \r\n\r\n6.1 在线目录 \r\n6.1.1 远程接口 \r\n6.1.2 本地接口 \r\n6.1.3 企业bean \r\n6.2 打包和配置 \r\n6.2.1 客户 \r\n6.2.2 运行客户 \r\n6.3 目录/库存清单bean \r\n6.3.1 远程接口 \r\n6.3.2 本地接口 \r\n6.3.3 企业bean \r\n6.3.4 PrimaryKey类 \r\n6.3.5 打包和配置 \r\n6.3.6 作为客户的JavaServer页面 \r\n6.3.7 JSP页面 \r\n6.3.8 打包和配置 \r\n6.3.9 运行 \r\n6.3.10 超越HTML \r\n6.3.11 运行无线应用程序 \r\n6.4 ComplexKeyedItemBean代码清单 \r\n6.5 小结 \r\n\r\n第7章 Paul的路边助手 \r\n\r\n7.1 Paul的路边助手 \r\n7.2 实际运行的应用程序 \r\n7.2.1 调度员看到的应用程序 \r\n7.2.2 驾驶员所看到的应用程序 \r\n7.3 Stockroom Bean \r\n7.3.1 远程接口 \r\n7.3.2 本地接口 \r\n7.3.3 企业bean \r\n7.3.4 打包和配置Stockroom Bean \r\n7.4 PartsManager Bean \r\n7.4.1 远程接口 \r\n7.4.2 本地接口 \r\n7.4.3 企业bean \r\n7.5 打包和配置PartsManager Bean \r\n7.6 Web组件 \r\n7.7 跟踪请求 \r\n7.8 PartsQuery JSP \r\n7.8.1 来自调度员的请求 \r\n7.8.2 来自驾驶员的请求 \r\n7.9 打包和配置 \r\n7.9.1 WorkDirector Servlet \r\n7.9.2 HTML页面 \r\n7.9.3 错误页面 \r\n7.9.4 查询JSP \r\n7.10 配置应用程序 \r\n7.11 填充Stockroom \r\n7.12 Stockroom Enterprise Bean \r\n7.13 PartsManager Enterprise Bean \r\n7.14 DispatcherHold.jsp \r\n7.15 DispatcherSend.jsp \r\n7.16 DriverQuery.jsp \r\n7.17 DriverHold.jsp \r\n7.18 DriverSend.jsp \r\n7.19 DriverQueryError.jsp \r\n7.20 小结 \r\n\r\n第8章 扩充Stockroom的功能 \r\n\r\n8.1 库存空的情况 \r\n8.2 聪明的Stockroom Bean \r\n8.3 Warehouse \r\n8.3.1 远程接口 \r\n8.3.2 本地接口 \r\n8.3.3 企业bean \r\n8.4 PartsManager bean \r\n8.5 打包和配置 \r\n8.6 准备运行 \r\n8.7 观察应用程序的运行 \r\n8.8 管理仓库 \r\n8.9 修改后的Stockroom Bean \r\n8.10 货栈bean \r\n8.11 修改后的PartsManager Bean \r\n8.12 ManageStockroom.html \r\n8.13 GetOrders.jsp \r\n8.14 ViewOrder.jsp \r\n8.15 CloseOrder.jsp \r\n8.16 OrderListEmpty.jsp \r\n8.17 ProcessShipment.jsp \r\n8.18 小结 \r\n\r\n第9章 自动取款机 \r\n\r\n9.1 ATM \r\n9.1.1 远程接口 \r\n9.1.2 本地接口 \r\n9.1.3 企业bean \r\n9.2 JSP \r\n9.3 打包和配置 \r\n9.4 数据库 \r\n9.5 运行我们的应用程序 \r\n9.6 AtmBean \r\n9.7 AtmIntermediateBean \r\n9.8 AtmTransaction.jsp \r\n9.9 ATM.html \r\n9.10 小结 \r\n\r\n第10章 实现ATM的另一种方法 \r\n\r\n10.1 容器管理的事务 \r\n10.2 事务属性 \r\n10.2.1 Required \r\n10.2.2 Requires New \r\n10.2.3 Mandatory \r\n10.2.4 Not Supported \r\n10.2.5 Supports \r\n10.2.6 Never \r\n10.3 ATM \r\n10.3.1 远程接口 \r\n10.3.2 本地接口 \r\n10.3.3 企业bean \r\n10.3.4 回滚 \r\n10.3.5 SessionSynchronization接口 \r\n10.4 不要浪费时间 \r\n10.5 打包和配置 \r\n10.6 运行应用程序 \r\n10.7 AtmCmtBean.java \r\n10.8 小结 \r\n\r\n第11章 无编译的定制 \r\n\r\n11.1 环境项目 \r\n11.2 简单的税收bean \r\n11.2.1 远程接口 \r\n11.2.2 本地接口 \r\n11.2.3 打包和配置 \r\n11.2.4 客户 \r\n11.2.5 运行客户 \r\n11.3 来自税收表的税收 \r\n11.4 TaxTable Bean \r\n11.4.1 远程接口 \r\n11.4.2 本地接口 \r\n11.4.3 企业bean \r\n11.5 访问税收表 \r\n11.5.1 远程接口 \r\n11.5.2 本地接口 \r\n11.5.3 企业bean \r\n11.5.4 打包和配置 \r\n11.6 客户 \r\n11.7 TaxTable企业bean \r\n11.8 小结 \r\n\r\n第12章 鉴别和授权 \r\n\r\n12.1 实现安全机制的J2EE方法 \r\n12.1.1 鉴别 \r\n12.1.2 创建组和用户 \r\n12.1.3 鉴别 \r\n12.1.4 远程接口 \r\n12.1.5 本地接口 \r\n12.1.6 企业bean \r\n12.1.7 客户 \r\n12.1.8 打包和配置 \r\n12.1.9 运行J2EE客户 \r\n12.2 引入安全机制 \r\n12.3 小结 \r\n\r\n第13章 从EJB中发送电子邮件 \r\n\r\n13.1 Mailer Bean \r\n13.1.1 远程接口 \r\n13.1.2 本地接口 \r\n13.1.3 企业bean \r\n13.1.4 打包和配置 \r\n13.1.5 简单的客户程序 \r\n13.1.6 运行客户 \r\n13.2 小结 \r\n\r\n第14章 其他考虑因素 \r\n\r\n14.1 Jar文件监视器 \r\n14.1.1 远程接口 \r\n14.1.2 本地接口 \r\n14.1.3 企业bean \r\n14.1.4 打包和配置 \r\n14.1.5 客户 \r\n14.1.6 运行客户程序 \r\n14.2 小结 \r\n\r\n第15章 代价 \r\n\r\n15.1 对EJB性能的初步映像 \r\n15.1.1 远程接口 \r\n15.1.2 本地接口 \r\n15.1.3 企业bean \r\n15.1.4 打包和配置 \r\n15.1.5 客户程序 \r\n15.1.6 运行 \r\n15.1.7 尝试使用非EJB的版本 \r\n15.1.8 运行简单的版本 \r\n15.1.9 得出某些结论 \r\n15.2 减少网络性能的恶化 \r\n15.2.1 远程接口 \r\n15.2.2 本地接口 \r\n15.2.3 企业bean \r\n15.2.4 打包和配置 \r\n15.2.5 客户 \r\n15.2.6 运行 \r\n15.2.7 如果没有EJB \r\n15.2.8 运行非EJB的版本 \r\n15.2.9 分析现象 \r\n15.3 用户的观点 \r\n15.3.1 中介JavaBean \r\n15.3.2 JSP \r\n15.3.3 HTML \r\n15.3.4 运行第1个基于Web的例子 \r\n15.3.5 简单的JavaBean \r\n15.3.6 JSP \r\n15.3.7 HTML \r\n15.3.8 运行第2个基于Web的例子 \r\n15.3.9 分析结果 \r\n15.4 小结 \r\n\r\n第16章 使用helper类改善数据库性能 \r\n\r\n16.1 多线定购 \r\n16.2 helper类 \r\n16.3 使用helper类 \r\n16.3.1 远程接口 \r\n16.3.2 本地接口 \r\n16.3.3 企业bean \r\n16.4 客户程序 \r\n16.4.1 HTML \r\n16.4.2 JSP \r\n16.4.3 中介JavaBean \r\n16.4.4 打包和配置 \r\n16.5 运行客户程序 \r\n16.6 小结 \r\n\r\n附录A EJB API\r\n\r\nA.1 接口小结 \r\nA.2 接口EJBContext \r\nA.2.1 方法小结 \r\nA.2.2 方法细节 \r\nA.3 接口EJBHome \r\nA.3.1 方法小结 \r\nA.3.2 方法细节 \r\nA.4 接口EJBMetaData \r\nA.4.1 方法小结 \r\nA.4.2 方法细节 \r\nA.5 接口EJBObject \r\nA.5.1 方法小结 \r\nA.5.2 方法细节 \r\nA.6 接口EnterpriseBean \r\nA.7 接口EntityBean \r\nA.7.1 方法小结 \r\nA.7.2 方法细节 \r\nA.8 接口EntityContext \r\nA.8.1 方法小结 \r\nA.8.2 方法细节 \r\nA.9 接口Handle\r\nA.9.1 方法小结 \r\nA.9.2 方法细节 \r\nA.10 接口HomeHandle \r\nA.10.1 方法小结 \r\nA.10.2 方法细节 \r\nA.11 接口SessionBean \r\nA.11.1 方法小结 \r\nA.11.2 方法细节 \r\nA.12 接口SessionContext \r\nA.12.1 方法小结 \r\nA.12.2 方法细节 \r\nA.13 接口SessionSynchronization \r\nA.13.1 方法小结 \r\nA.13.2 方法细节 \r\nA.14 异常小结 \r\nA.15 类CreateException \r\nA.15.1 构造函数小结 \r\nA.15.2 构造函数细节 \r\nA.16 类DuplicateKeyException \r\nA.16.1 构造函数小结 \r\nA.16.2 构造函数细节\r\nA.17 类EJBException \r\nA.17.1 构造函数小结 \r\nA.17.2 构造函数细节 \r\nA.17.3 方法小结 \r\nA.17.4 方法细节 \r\nA.18 类FinderException \r\nA.18.1 构造函数小结 \r\nA.18.2 构造函数细节 \r\nA.19 类NoSuchEntityException \r\nA.19.1 构造函数小结 \r\nA.19.2 构造函数细节 \r\nA.20 类ObjectNOtFoundException \r\nA.20.1 构造函数小结\r\nA.20.2 构造函数细节 \r\nA.21 类RemoveException \r\nA.21.1 构造函数小结 \r\nA.21.2 构造函数细节 \r\n\r\n\r\n\r\n
Java 2 Enterprise Edition(Java 2企业版)对分布式计算领域所做贡献的重要性可以与SQL(Structured Query Language, 结构化查询语言)在关系数据库领域的重要性相提并论. 不甘落后的开发人员都知道在JZEE兼容服务器上开发应用程序学习的重要性. J2EE是由许多组件构成的. 本书将讲述这些组件中的一个, 即 Enterprise JavaBeans.
本书面向的读者
本书适用于使用Java进行编程, 但至今没有使用过Enterprise JavaBeans的软件开发人员. 本书面向那些通过研究工作实例进行学习的程序员. 本书提供了完整的代码实例, 而不是代码片断.
本书的组织结构
在本书的每一章中, 都包含一个或者多个示例的完整的源代码, 用以说明该章所讲述的主题内容. 在前面的章节中, 将详细介绍应用程序的打包和配置过程. 在后面的章节中, 当读者逐渐熟悉这些过程之后, 我们将减少细节内容的描述.
大多数读者希望研究源代码, 编译它, 并配置应用程序和运行应用程序所包含的beaus的客户程序. 这些读者可以在光盘上找到所有源代码. 批处理文件和数据文件的副本. 对于那些仅仅希望研究源代码和运行示例的读者, 我们为每个应用程序提供了用少数简单步骤就可以配置的. ear文件. 我们还提供了每个客户程序的编译版本.
技术说明
本书所有示例的开发和测试都是在微软公司的 Windows NT 4. 0(Build 1381 Service Pack5)平台上进行的, 并使用Sun Microsystems公司的Java 2 SDK Enterprise Edition的Reference Implementation1.2.1版. 每个. ear文件是用在Red Hat版本6. 2上运行的J2SDKEE的Linux端口进行配置和测试的.
Reference Implementation有一些难以理解的地方, 其中最困难的就是尝试替换已经配置的应用程序. 有时候, 你会发现需要终止和重新启动服务器. 根据笔者的开发经验, 在所有其他方法失效的时候, 可利用下面的步骤为你提供帮助:
(l)使用 Application Development Tool(应用程序开发工具)上的Undeploy(取消配置)按钮来取消应用程序的配置.
(2)删除配置了应用程序的服务器.
(3)关闭服务器.
(4)调用清理脚本.
(5)重新启动服务器.
(6)将服务器添加到Application Deployment Tool上.
(7)重新配置应用程序.
注意:
清理脚本在 Linux和 NT下的工作方式是不同的. 如果没有注意到这一点, 则会丢失源文件.
如果仅仅希望配置和运行示例, 则过程如下:
(1)在 Application Deployment Tool中选择 File(文件)菜单中的 Open Application…(打开应用程序)选项.
(2)进入包含适当的. ear文件的目录.
(3)加载. ear文件.
(4)使用Tools(工具)菜单中的Deploy Application…(配置应用程序)选项来配置应用程序.
(5)运行适当的客户程序.