目录 1
第一篇 EnterpriseJavaBeans基础 1
第一章 企业应用开发与J2EE 1
1.1分布式计算介绍 1
1.1.1分布式计算的概念 1
1.1.2构成分布式计算的一些基本要素 2
1.1.3软件组件技术介绍 3
1.2企业应用开发模型 4
1.2.1传统Client/Server系统的两层体系结构 4
1.2.2企业应用开发的多层体系结构 5
1.2.3基于组件的分布式系统开发规范与平台 6
1.3J2EE标准 10
1.3.1什么是J2EE 11
1.3.2J2EE体系结构介绍 11
1.3.3J2EE组件 12
1.3.4J2EE客户端 12
1.3.5J2EE技术 12
1.4EJB与企业应用集成(EAI) 14
1.4.1电子商务就是EAI 15
1.4.2企业应用分割带来的问题 15
1.4.3什么是EAI 15
1.4.4EAI的目标 17
1.4.5EAI的类型 17
1.4.7EAI架构模式 19
1.4.6EAI中间件技术 19
1.4.8EJB、应用程序服务器与应用程序集成(EAI) 23
第二章 EnterpriseJavaBeans概述 27
2.1什么是EJB 27
2.1.1EJB的定义 27
2.1.2EJB技术规范目标 27
2.2为什么选择EJB 28
2.3EJB中的角色 29
2.3.1角色定义 29
2.3.2EJB角色间的关系 30
2.4EJB的种类 30
2.4.1会话Bean(SessionBean) 31
2.4.3消息处理Bean 32
2.4.2实体Bean(EntityBean) 32
2.5EnterpriseJavaBeans和JavaBeans的关系 33
2.6EnterpriseJavaBeans的体系结构 33
2.6.1相关概念 33
2.6.2体系结构 35
2.7理解EJB组件 36
2.7.1Home接口 36
2.7.2Home接口中的方法 37
2.7.3容器 38
2.7.4EnterpriseJavaBean 38
2.7.6EJBObject 39
2.7.5RemoteInterface 39
2.8会话Bean 40
2.8.1会话Bean的交换 41
2.8.2活化和钝化 41
2.8.3会话Bean的状态管理 41
2.9实体Bean 42
2.9.1实体Bean的角色 42
2.9.2实体Bean和会话Bean的比较 42
2.9.3Finder方法 43
2.9.4主键 44
2.9.5实体Bean的内外存交换 45
2.9.6自管理的持久性 46
2.9.7容器管理的持久性 46
2.10EJB的配置和部署 47
2.10.1EJB部署描述符顶级元素 47
2.10.2部署描述符 47
2.10.3EJBJar文件 47
2.10.4EJB部署过程 47
2.10.5区分EJB开发的角色 48
2.11EJB异常类型 50
3.1.1有状态会话Bean 51
3.1.2无状态会话Bean 51
第三章 SessionBean组件 51
3.1概述 51
3.1.3会话Bean的客户端视图 52
3.2会话Bean客户端接口 53
3.2.1会话Bean远程接口 53
3.2.2会话Bean本地接口 55
3.2.3会话Bean的Home接口 55
3.2.4会话Bean的本地Home接口 57
3.3无状态会话Bean 58
3.3.1无状态会话Bean的生命周期 58
3.3.3无状态会话Bean上下文设置 59
3.3.4无状态会话Bean的创建与删除 59
3.3.2无状态会话Bean的Bean类 59
3.4有状态会话Bean 60
3.4.1有状态会话Bean的生命周期 61
3.4.2有状态会话Bean的Bean类 62
3.4.3有状态会话Bean的创建与删除 62
3.4.4有状态会话Bean的钝化与激活 62
3.4.5有状态会话Bean小结 63
3.5从EJB会话Bean访问EJB实体Bean 63
3.6小结 66
第四章 实体Bean组件 67
4.1实体Bean概述 67
4.2实体Bean客户端接口 68
4.2.1实体Bean远程接口 69
4.2.2实体Bean本地接口 70
4.2.3实体Bean的Home接口 71
4.2.4实体Bean的本地Home接口 72
4.3介绍BMP实体Bean 75
4.3.1BMP实体Bean的生命周期 75
4.3.2BMP实体Bean上下文的设置与取消设置 76
4.3.3BMP实体Bean的查找 77
4.3.4BMP实体Bean的创建与删除 77
4.3.5BMP实体Bean的钝化与激活 78
4.3.6BMP实体Bean的存储与加载 79
4.3.7BMP实体Bean小结 79
4.4.2CMP2.0模型 80
4.4.1EJB2.0与CMP 80
4.4介绍CMP实体Bean 80
4.4.3容器管理的关系(CMR) 82
4.4.4CMP实体Bean的生命周期 82
4.4.5CMP实体Bean小结 84
第五章 EJBQL:用于CMP查询方法的EJB查询语言 85
5.1概述 85
5.2EJBQL定义 86
5.2.1抽象模式类型和查询域 86
5.2.2查询方法 87
5.2.3命名 88
5.2.4示例 88
5.2.5返回值类型 89
5.2.6From语句和导航声明 90
5.2.7Where语句和条件表达式 93
5.2.8Select语句 98
5.2.9Null值 99
5.2.10相等语义 100
5.2.11限制 100
5.3示例 101
5.3.1简单查询 101
5.3.2有关系的查询 101
5.3.3使用输入参数查询 102
5.3.5EJBQL和SQL 103
5.3.4查询实体Bean的值 103
5.4EJBQLBNF 104
第六章 消息驱动的Bean组件 108
6.1概述 108
6.2消息驱动Bean组件的作用 108
6.3消息驱动Bean的客户端视图 109
6.4消息驱动Bean实例与其容器之间的关系 110
6.4.1必需的MessageDrivenBean接口 110
6.4.2必需的javax.jms.MessageListener接口 111
6.4.3MessageDrivenContext接口 111
6.4.4消息驱动Bean的ejbCreate()方法 111
6.4.8消息确认 112
6.4.7消息驱动Bean方法的事务上下文 112
6.4.6消息处理的并发 112
6.4.5序列化消息驱动Bean方法 112
6.4.9消息驱动Bean与目的地的关联 113
6.4.10处理异常 113
6.4.11遗漏的ejbRemove()调用 114
6.5消息驱动Bean状态图 114
6.6消息驱动Bean的对象交互图 116
6.6.1消息接收:onMessage方法调用 116
6.6.2将实例添加到池中 116
6.6.3从池中删除实例 117
6.7Bean供应商的责任 117
6.7.3ejbCreate方法 118
6.7.4onMessage方法 118
6.7.2消息驱动Bean类 118
6.7.1类和接口 118
6.7.5ejbRemove方法 119
6.8容器供应商的责任 119
6.8.1实现类的生成 119
6.8.2消息驱动Bean的部署 119
6.8.3非可重入实例 119
6.8.4事务范围、安全、异常 119
第七章 事务处理 120
7.1事务的概念 120
7.2.2JavaTransactionAPI(JTA) 124
7.2.1JavaTransactionService(JTS) 124
7.2J2EE对事务的支持 124
7.2.3EJB事务属性 125
7.3隔离 128
7.3.1并发控制 128
7.3.2并发事务引发的问题 129
7.3.3隔离层 130
第八章 安全性 133
8.1EJB1.1安全模型 133
8.2EJB安全定制 137
第九章 异常 139
9.1异常的种类 139
9.3EJB容器处理异常的方式 140
9.2异常处理基础知识 140
9.4一般的处理异常策略 141
9.5EJB异常处理的原则 143
9.6应用异常的处理 144
9.7处理系统异常 145
9.8处理Web层的异常 149
9.9真实世界的复杂性 149
9.10小结 151
第十章 EJB与J2EE设计模式 152
10.1Model-View-Controller模式 152
10.2FrontController模式 153
10.3SessionFacade模式 156
10.4DataAccessObject模式 160
10.5小结 163
第二篇 使用VisualAgeforJava开发EJB 164
第十一章 介绍VisualAgeforJava 164
11.1概述 164
11.2集成式开发环境(IDE) 165
11.3数据库连接 165
11.4企业系统连接 165
11.5J2EE开发环境 165
11.7容器管理的持久化(Container-ManagedPersistence,CMP) 166
11.6EJB页 166
11.8WebSphere测试环境(WTE,WebSphereTestEnvironment) 167
11.9Deployment(发布) 167
11.10测试和调试 167
11.11RAD支持 167
11.12小组开发环境 168
第十二章 EJB开发环境 169
12.1EJB开发环境的功能概述 169
12.1.1EJB页 169
12.1.2创建EntcrpriseBean和AccessBean 169
12.1.5验证EnterpriseBean和AccessBean代码 170
12.1.6测试EnterpriscBean 170
12.1.4生成调度码 170
12.1.3在EnterpriseBean中构建数据持久性 170
12.2安装和配置VisualAgeforJava 171
12.2.1安装VisualAgeforJava 171
12.2.2装入必需的功能部件 172
12.2.3将JDBC驱动程序添加到类路径 174
12.3EJB开发环境的使用概述 175
12.4EJB页 177
12.4.1企业Bean窗格 177
12.4.2类型/特性窗格 178
12.5.2EnterpriseBeans窗格的操作 179
12.5.1工具栏的图标 179
12.5操作 179
12.4.4Source窗格 179
12.4.3成员窗格 179
12.5.3对类型的操作 183
12.5.4对特性菜单的操作 183
12.5.5对成员的操作 184
12.5.6对Source窗格的操作 185
12.5.7对EnterpriseBean的测试 185
第十三章 使用VisualAgeforJava开发CMP实体Bean 186
13.1CMP开发过程概述 186
13.2EJB组(EJBGroup)的使用 186
13.2.1添加EJB组 187
13.2.2从模式或模型创建EJB组 188
13.3添加EnterpriseBean 190
13.2.3删除EJB组和EnterpriseBean 190
13.3.1打开“创建EnterpriseBean智能向导” 191
13.3.2创建新的EnterpriseBean 192
13.3.3从资源库检索现存的EnterpriseBean 196
13.3.4从JAR文件导入EnterpriseBean 197
13.4创建和管理CMP字段 197
13.4.1添加CMP字段 198
13.4.2删除CMP字段 199
13.5实例:创建一个简单的CMP实体Bean 200
13.5.1理解自动生成的类和接口 201
13.5.2理解自动生成的方法 208
13.6在企业Bean中添加新的方法 209
13.7添加方法到远程接口 210
13.8将方法标记为只读 210
13.9定制本地接口 210
13.9.1定制ejbCreate方法 211
13.9.2创建新的ejbCreate方法 211
13.9.3添加方法到本地接口 211
13.10定义数据库模式 212
13.10.1创建模式 212
13.10.2创建表和列 214
13.10.3创建外键关系 216
13.11映射数据库模式 217
13.10.4将模式导出到数据库 217
13.11.1创建EJB组映射 218
13.11.2创建表映射 219
13.11.3编辑特性映射 222
13.12将企业Bean映射至数据库表的方法 223
13.12.1自顶向下 223
13.12.2自底向上 223
13.12.3上下向中 224
13.13调度 224
13.13.1设置EJB调度描述符特性 224
13.13.2生成EJB调度类 225
13.14小结 226
第十四章 使用VisualAgeforJava开发BMP实体Bean 227
14.1Bean-Managedpersistence(Bean管理的持久化) 227
14.2实例:开发一个BMP实体Bean 227
14.2.1创建一个BMP实体Bean 227
14.2.2理解生成的类和接口 228
14.2.3添加和定义BMP字段 228
14.2.4更改键类 229
14.2.5Bean类中的方法 230
14.2.6实现Bean类中的方法 231
14.2.7修改本地接口和远程接口 242
14.3小结 242
15.1SessionBean的实现 243
15.1.1SessionBean类 243
第十五章 使用VisualAgeforJava开发SessionBean 243
15.1.2远程接口 245
15.1.3本地接口 246
15.2实例:无状态SessionBean的开发 247
15.2.1新建SessionBean 247
15.2.2理解自动生成的类型和方法 247
15.2.3添加商业方法 247
15.2.4设置SessionBeand的状态管理属性 249
15.3实例:购物车SessionBean 249
15.3.1创建购物车SessionBean 249
15.3.3代表购物信息的一个类 250
15.3.2定义购物车SessionBean的状态管理属性 250
15.34在Bean类中创建商业方法 251
15.3.5将创建的商业方法添加到本地接口或者远程接口 252
15.4小结 254
第十六章 定制Finder方法进行查询 255
16.1Finder方法概述 255
16.2编写定制的Finder方法 255
16.2.1BeanFinderHelper接口 255
16.2.2BeanFinderObject类 260
16.3何时使用定制Finder 262
16.3.1两种方法的混合使用 262
16.3.2定制Finder的替代选择 262
16.4Finder方法和事务 263
16.5Finder和复杂的关联 264
16.6小结 264
第十七章 AccessBeans(访问Bean)开发 265
17.1AccessBean概述 265
17.1.1AccessBean的类型 266
17.1.2AccessBean的一般特性 266
17.1.3AccessBean的一般约定 267
17.2JavaBeanwrapper 267
17.2.1创建JavaBeanWraper 267
17.2.2分析生成的JavaBeanWraper 269
17.3CopyHelper 272
17.3.1创建CopyHelper访问Bean 273
17.3.2分析生成的CopyHelper访问Bean 274
17.4Rowset 280
17.4.1创建Rowset访问Bean 280
17.4.2分析生成的Rowset访问Bean 280
17.5在客户端编程中使用AccessBean 282
第十八章 继承 283
18.1继承概述 283
18.1.1为继承创建映射 283
18.1.2EJB继承的特性 284
18.1.3标准Java继承的特性 284
18.2实例:使用EJB继承创建EnterpriseBean 285
18.4小结 288
18.3使用Java继承来开发企业Bean 288
第十九章 关联 289
19.1实例:创建l:m关联 289
19.1.1创建实体Bean:Company和Product 290
19.1.2添加关联 290
19.1.3生成的代码 292
19.1.4定义数据库模式 315
19.1.5定义外键关系 317
19.1.6映射模式和映射关联 317
19.2实例:创建m:m关联 319
第二十章 客户端编程 320
20.1实例:查询图书内容 320
20.2使用AccessBean来访问EJB 324
第二十一章 实例:网站内容管理系统 325
21.1介绍内容管理系统 325
21.2功能分析 325
21.2.1栏目管理 325
21.2.2页面管理 327
21.2.3内容浏览 329
21.3系统设计 330
21.3.1抽取对象 330
21.3.2设计数据库 330
21.3.3设计模式 331
21.4实现方案 331
21.5.1Servlet的父类 333
21.5程序讲解 333
21.5.2删除栏目(Servlet程序) 334
21.5.3编辑栏目(Servlet程序) 336
21.5.4查看栏目内容(Servlet程序) 337
21.5.5查看栏目列表(Servlet程序) 339
21.5.6新建栏目(Servlet程序) 340
21.5.7删除文章(Servlet程序) 342
21.5.8编辑文章(Servlet程序) 344
21.5.9查看文章内容(Servlet程序) 346
21.5.10查看文章列表(Servlet程序) 347
21.5.11新建文章(Servlet程序) 350
21.5.12浏览文章内容(Servlet程序) 352
21.5.13浏览文章列表(Servlet程序) 354
21.5.14编辑栏目(JSP页面) 357
21.5.15查看栏目列表(JSP页面) 358
21.5.16新建栏目(JSP页面) 359
21.5.17编辑文章(JSP页面) 360
21.5.18查看文章列表(JSP页面) 361
21.5.19新建文章(JSP页面) 363
21.5.20浏览文章内容(JSP页面) 364
21.5.21浏览文章列表(JSP页面) 366
21.6小结 368
附录A EJBAPI2.0 369
附录B EJB1.1部署描述符 381