书籍详情

精通EJB(第三版)

精通EJB(第三版)

作者:(美)罗曼(Ed Roman),(美)斯瑞格奈斯(Rima Patel Sriganesh),(美)布罗斯(Gerald Brose) 著,罗时飞 译;罗时飞译

出版社:电子工业出版社

出版时间:2005-09-01

ISBN:9787121016981

定价:¥69.00

购买这本书可以去
内容简介
  内容简介: 本书是关于EJB 2.1的经典书籍,是EJB开发者必备的参考书。全书共分为3篇。第1篇对EJB编程基础进行介绍,它概要性地对EJB进行了阐述,无论是EJB初学者,还是资深EJB专家,这部分内容都值得阅读;第2篇重点关注EJB编程的具体内容和过程,其中,研究了如何开发如下三种EJB组件:会话Bean、实体Bean和消息驱动Bean。具体内容包括开发各种EJB组件的基础知识(结合开发实例)、组件生命周期的详细阐述;第3篇是本书最为令人兴奋的一部分内容。专注于高级EJB专题;附录收集了EJB组件技术相关的其他内容。 读者对象:本书适合作为Java程序员、网站开发人员和系统分析员的参考书。特色:从本书第一版,到读者手中的第三版,本书已经持续好几年了。而且,我们都一直将它作为优秀的项目看待。此书从第一版开始就得到很多读者认可,他们都认为这是一本很棒的技术书籍。 本书是EJB组件技术教程,专注于EJB概念、方法和开发过程。同时,本书还研究许多高端EJB知识,使得开发者能够真正理解和掌握EJB,实践出真知。因此,通过阅读此书,开发者将精通EJB。阅读完本书后,你将有如下收获:● 用EJB 2.1标准进行应用程序开发● 精通完整的EJB 2.1技术,包括:Java RMI、RMI-IIOP、JTA、JNDI、CORBA和XML● 用会话Bean和实体Bean进行应用程序开发● 设计、实现一个实际的应用系统
作者简介
  EdRoman,高端中间件技术领域中的世界级权威人士。在SunMicrosystem推出企业级Java解决方案初期,他就一直在跟进中间件技术。并且,已经设计、构建、部署了大量的企业应用。其中,他还架构并开发了完整的应用服务器产品。同时,他还有sun的企业级规范作出了很大的贡献,而且经常参与制定中间兴趣列表。RimaPatelSriganesh,目前,她在SunMicrosystem公司的TechnologyOutreachGroup从事技术工作,擅长Java、XML、集成平台,还代表Sun公司参与安全性、Choreography、金融服务等技术标准的制定工作。
目录
第1篇  总述
第1章  概述    3
1.1  EJB产生背景    4
1.2  组件架构    6
1.3  终极无间——可重用服务    8
1.4  EJB介绍    9
1.4.1  钟情Java    10
1.4.2  业务层组件——EJB    10
1.5  EJB生态圈    12
1.5.1  EJB组件提供者    13
1.5.2  应用组装者    13
1.5.3  EJB部署者    13
1.5.4  系统管理员    14
1.5.5  容器和服务器提供商    14
1.5.6  工具供应商    14
1.5.7  角色    15
1.6  J2EE    16
1.7  小结    20
第2章  EJB基础    21
2.1  企业Bean    21
2.2  分布式对象——EJB的支撑    24
2.3  分布式对象和中间件    25
2.3.1  显式中间件    25
2.3.2  隐式中间件    26
2.4  EJB的组成部分    27
2.4.1  企业Bean的Bean类    28
2.4.2  EJB对象    28
2.4.3  Home接口    32
2.4.4  本地接口    34
2.4.5  部署描述符    36
2.4.6  供应商特定文件    37
2.4.7  Ejb-jar文件    37
2.4.8  术语集合    38
2.5  小结    39
第3章  开发第一个EJB组件    41
3.1  如何开发EJB组件    41
3.2  远程接口    43
3.3  本地接口    43
3.4  Home接口    44
3.5  本地Home接口    46
3.6  Bean类    47
3.7  部署描述符    50
3.8  供应商特定文件    51
3.9  Ejb-jar文件    51
3.10  部署EJB组件    52
3.11  可选的EJB客户端jar文件    52
3.12  如何调用EJB组件    53
3.13  运行整个应用    57
3.14  实现组件接口    57
3.15  小结    59
第2篇  EJB组件
第4章  会话Bean介绍    63
4.1  会话Bean的生命周期    63
4.2  会话Bean的子类型    64
4.2.1  有状态会话Bean    64
4.2.2  无状态会话Bean    64
4.3  有状态会话Bean的不同点    66
4.3.1  实现实例池功能    66
4.3.2  维护会话状态的规则    67
4.3.3  激活和挂起回调    68
4.3.4  方法实现小结    71
4.3.5  一个简单的
有状态会话Bean    71
4.3.6  会话Bean的生命
周期流程图    79
4.4  小结    81
第5章  将会话Bean发布
为Web服务    83
5.1  Web服务概念    83
5.1.1  Web服务标准    85
5.1.2  XML文档和平台
无关性    88
5.2  实现Web服务    89
5.2.1  JAX-RPC服务
端点接口    90
5.2.2  WSDL和XML/Java
映射    91
5.2.3  打包和部署暴露Web
服务的会话Bean    91
5.3  实现Web服务客户    92
5.4  小结    94
第6章  实体Bean介绍    95
6.1  持久化概念    95
6.2  何为实体Bean    97
6.3  实体Bean特点    99
6.3.1  实体Bean在失败中
幸免    99
6.3.2  实体Bean实例是
RDBMS视图    99
6.3.3  不同实体Bean实例
可能代表了同一
RDBMS纪录    101
6.3.4  池化实体Bean实例    101
6.3.5  持久化实体Bean的
两种方式    104
6.3.6  创建和删除
实体Bean    104
6.3.7  能够查找实体Bean    106
6.3.8  不使用EJB也能够
修改实体Bean持有的
数据    107
6.4  实体上下文    107
6.4.1  getEJBLocalObject()
和getEJBObject()    108
6.4.2  getPrimaryKey()    108
6.5  小结    109
第7章  开发Bean管理持久化
实体Bean    111
7.1  实体Bean编程基础    111
7.2  Bean管理持久化实例
——银行Account    116
7.2.1  Account.java    117
7.2.2  AccountLocal.java    118
7.2.3  AccountHome.java    119
7.2.4  AccountLocalHome.java    120
7.2.5  AccountPK.java    121
7.2.6  AccountBean.java    122
7.2.7  AccountException.java    133
7.2.8  Client.java    134
7.2.9  部署描述符    136
7.2.10  具体容器的部署
   描述符    137
7.2.11  配置数据库    137
7.3  运行客户应用    138
7.3.1  服务器端输出    138
7.3.2  客户端输出    139
7.4  BMP实体Bean的生命周期    139
7.5  小结    141
第8章  开发容器管理持久化
        实体Bean    143
8.1  CMP实体Bean的特点    143
8.1.1  需要实现CMP
      实体Bean的子类    143
8.1.2  CMP实体Bean不存在
      持久化域    145
8.1.3  CMP中的setter、
getter方法定义在
实体Bean子类中    145
8.1.4  CMP实体Bean存在
抽象持久化模式    147
8.1.5  CMP实体Bean存在
查询语言    148
8.1.6  CMP实体Bean可以
存在ejbSelect()方法    149
8.2  CMP实体Bean组件的
实现指南    150
8.3  CMP实例——产品系列    152
8.3.1  Product.java    153
8.3.2  ProductLocal.java    154
8.3.3  ProductHome.java    155
8.3.4  ProductLocalHome.
java    156
8.3.5  ProductPK.java    157
8.3.6  ProductBean.java    158
8.3.7  部署描述符    162
8.3.8  具体容器的部署
描述符    165
8.3.9  Client.java    166
8.4  运行客户应用    168
8.5  CMP实体Bean的生命周期    168
8.6  小结    169
第9章  消息驱动Bean介绍    171
9.1  使用消息驱动Bean的动机    172
9.2  Java消息服务    173
9.2.1  消息域    174
9.2.2  JMS API    175
9.3  集成JMS和EJB    178
9.4  开发消息驱动Bean    181
9.4.1  语义    181
9.4.2  一个简单实例    183
9.5  高级概念    187
9.6  基于JMS的消息
     驱动Bean陷阱    190
9.6.1  消息顺序    190
9.6.2  错过调用
ejbRemove()    190
9.6.3  坏消息    191
9.6.4  如何将结果返回
给消息生产者    193
9.6.5  异步方法调用    196
9.7  小结    197
第10章  扩充EJB组件的功能    199
10.1  从其他EJB中调用EJB    199
10.1.1  默认JNDI查找    200
10.1.2  理解EJB引用    200
10.2  资源工厂    202
10.3  环境属性    204
10.4  理解Handle    206
10.5  小结    207
第3篇  高级EJB概念
第11章  EJB最佳实践    211
11.1  何时使用EJB    211
11.2  如何选用同EJB协同
工作的Web应用框架    213
11.3  在EJB项目中实施MDD    215
11.4  在EJB项目中
实施极限编程    216
11.5  测试EJB    218
11.5.1  EJB单元测试    218
11.5.2  借助于框架完成EJB的
       单元测试    219
11.6  如何在EJB中实现客户端
回调功能    221
11.6.1  JMS    221
11.6.2  远程对象调用    221
11.6.3  Web服务    221
11.7  选用Servlet或无状态会话
Bean作为服务Endpoint    222
11.8  在EJB项目中考虑
使用AOP技术    222
11.8.1  AOP    222
11.8.2  何时在EJB应用中
       使用AOP    223
11.9  反射、动态代理和EJB    224
11.10  将EJB部署到不同
  应用服务器    225
11.11  调试EJB    226
11.12  EJB中的继承和代码复用    227
11.13  在EJB中实现Singleton    228
11.14  何时在EJB中使用XML    229
11.15  选择消息或RMI-IIOP的
  时机    230
11.16  小结    232
第12章  事务    233
12.1  使用事务的动机    234
12.1.1  原子操作    234
12.1.2  网络或机器失败    235
12.1.3  多用户共享数据    235
12.2  事务带来的优势    236
12.3  事务模型    238
12.3.1  平面事务    239
12.3.2  嵌入式事务    240
12.3.3  其他事务模型    241
12.4  事务在EJB中的使用    241
12.4.1  底层事务系统抽象    241
12.4.2  声明式、编程式
       及客户发起的事务    242
12.4.3  选择事务风格    244
12.5  容器管理事务    246
12.6  EJB中的编程式事务    251
12.6.1  CORBA对象事务
       服务    252
12.6.2  Java事务服务    252
12.6.3  Java事务API    252
12.6.4  声明式和编程式
       事务示例    254
12.7  客户代码使用事务    256
12.8  事务隔离    257
12.8.1  并发控制的必要性    257
12.8.2  脏读问题    258
12.8.3  不可重复读问题    260
12.8.4  幻影读问题    260
12.8.5  事务隔离小结    261
12.8.6  隔离和EJB    261
12.8.7  悲观和乐观
       并发控制    262
12.9  分布式事务    262
12.9.1  持久性和2PC协议    263
12.9.2  事务通信协议和事务
       上下文    264
12.10  设计EJB中的事务会话    265
12.11  J2EE活动服务
  和扩展事务    267
12.12  小结    268
第13章  安全性    269
13.1  介绍    270
13.1.1  侵害、弱点和风险    270
13.1.2  控制    271
13.2  Web应用的安全性    272
13.2.1  Web应用的认证    273
13.2.2  授权    274
13.2.3  机密性和集成性    274
13.3  理解EJB安全性    275
13.3.1  EJB应用的认证    275
13.3.2  EJB中的授权    284
13.3.3  安全性传播    291
13.4  安全性互操作    293
13.4.1  基于SSL的IIOP    293
13.4.2  CSIv2    293
13.5  Web服务中的安全性    295
13.5.1  端对端的安全性    296
13.5.2  XML数字签名和
       XML加密    297
13.5.3  SAML    299
13.5.4  WS-Security    300
13.6  小结    302
第14章  EJB Timer    303
14.1  任务调度    303
14.2  EJB和任务调度    304
14.3  EJB Timer服务    305
14.3.1  Timer服务API    305
14.3.2  EJB同Timer服务的
       交互    308
14.4  Timer实例——
CleanDayLimitOrdersEJB    309
14.4.1  CleanDayLimitOrdersEJB
       的远程接口    309
14.4.2  CleanDayLimitOrdersEJB
       的Bean类    310
14.4.3  CleanDayLimitOrdersEJB
       的Home接口    312
14.4.4  CleanDayLimitOrdersEJB
       的部署描述符    312
14.4.5  CleanDayLimitOrdersEJB
       的客户    313
14.4.6  运行客户    314
14.5  EJB Timer服务的优缺点    315
14.6  小结    316
第15章  BMP和CMP关系    317
15.1  CMP和BMP的区别    318
15.2  基数    318
15.2.1  1:1关系    319
15.2.2  1:N关系    323
15.2.3  M:N关系    326
15.3  方向    333
15.3.1  实现BMP中的方向    333
15.3.2  实现CMP中的方向    334
15.3.3  方向可能不会反映到
       数据库模式    336
15.3.4  使用双向还是单向    337
15.4  延迟装载    337
15.5  聚合和合成关系、
级联删除    338
15.6  关系和EJB-QL    340
15.7  递归关系    340
15.8  循环关系    341
15.9  引用完整性    342
15.10  小结    345
第16章  持久化最佳实践    347
16.1  实体Bean同其他持久化
机制比较    347
16.1.1  控制    348
16.1.2  获取数据    348
16.1.3  过程式与面向对象
      (OO)的对比    349
16.1.4  缓存    349
16.1.5  实施模式独立性    349
16.1.6  移植    350
16.1.7  RAD    350
16.2  选择BMP还是CMP    351
16.2.1  代码简化和RAD    351
16.2.2  性能    351
16.2.3  Bug    351
16.2.4  控制    352
16.2.5  应用服务器和数据库
       独立性    352
16.2.6  关系    353
16.2.7  学习曲线和代价    353
16.3  为实体Bean选择合适的
  粒度    353
16.4  持久化提示和技巧    354
16.4.1  注意O/R间的矛盾    354
16.4.2  硬编码和
       软编码SQL    354
16.4.3  何时使用存储过程    355
16.4.4  规范化和反规范化    357
16.4.5  使用EJB对象模型
       驱动数据模型    358
16.4.6  遵循优秀的数据设计
       过程    358
16.4.7  使用代理主键    359
16.4.8  理解数据库更新
       操作带来的影响    360
16.4.9  版本化EJB组件    360
16.4.10  使用遗留
        数据库设计    361
16.4.11  处理大结果集    366
16.5  小结    367
第17章  EJB集成    369
17.1  研究集成的必要性    369
17.2  EJB和集成    370
17.3  J2EE连接器架构    371
17.3.1  引入J2EE连接器的
       理由    371
17.3.2  资源适配器同J2EE
       组件交互    373
17.3.2  资源适配器同应用
       服务器交互    374
17.4  J2EE连接器API    375
17.4.1  javax.resource包    376
17.4.2  javax.resource.cci包    376
17.4.3  javax.resource.spi包    378
17.4.4  javax.resource.spi.
       endpoint包    379
17.4.5  javax.resource.spi.
       security包    380
17.4.6  javax.resource.
       spi.work包    380
17.5  系统契约    381
17.5.1  生命周期管理    381
17.5.2  连接管理    382
17.5.3  安全性管理    384
17.5.4  事务管理    386
17.5.5  工作管理    390
17.5.6  外来消息管理    391
17.6  连接器实例——
OutboundLoanRA    392
17.6.1  实例架构    393
17.6.2  JavaLoanApp.java    394
17.6.3  LoadApp.dll    395
17.6.4  OutboundLoanRA    395
17.6.5  LoanRatesEJB    414
17.6.6  LoanRatesClient    417
17.6.7  运行客户    417
17.6.8  扩展
       OutboundLoanRA    419
17.7  集成最佳实践——
使用合适的技术    420
17.7.1  何时使用JMS和
       基于JMS的MDB    420
17.7.2  何时使用J2EE
       连接器    420
17.7.3  何时使用
       Java Web服务    421
17.8  小结    421
第18章  EJB性能调优    423
18.1  提前关注    423
18.2  从性能角度看待
有状态对无状态    424
18.3  如何借助于容量规划
来保证响应时间    426
18.4  使用会话外观改善性能    427
18.5  选择本地接口
还是远程接口    428
18.6  区分资源    429
18.7  无状态会话Bean调优    430
18.8  有状态会话Bean调优    430
18.9  实体Bean调优    431
18.10  MDB调优    435
18.11  Java虚拟机调优    436
18.12  其他调优技巧    437
18.13  正确选用EJB服务器    438
18.14  小结    439
第19章  群集    441
19.1  大型系统概述    441
19.1.1  何为大型系统    442
19.1.2  基本术语    443
19.1.3  区分群集    444
19.2  装备群集EJB    447
19.2.1  如何群集EJB    447
19.2.2  幂等性概念    448
19.2.3  群集无状态
     会话Bean    449
19.2.4  群集有状态
       会话Bean    451
19.2.5  群集实体Bean    452
19.2.6  群集MDB    455
19.3  其他EJB群集问题    455
19.3.1  初次接触    455
19.3.2  初始访问逻辑    456
19.4  小结    456
第20章  正确启动EJB项目    457
20.1  确定业务需求    457
20.2  J2EE是否适合项目    458
20.3  确定项目成员    461
20.4  设计完整的对象模型    461
20.5  实现单个垂直切片    462
20.6  选择应用服务器    463
20.7  划分团队    464
20.8  工具投资    466
20.9  采用标准构建过程    466
20.10  小结    466
第21章  选择EJB服务器    467
21.1  J2EE标准兼容性    468
21.2  插入式JRE    468
21.3  转换工具    468
21.4  复杂映射    468
21.5  第三方JDBC驱动支持    468
21.6  延迟装载    469
21.7  延迟数据库写入    469
21.8  插入式持久化提供商    469
21.9  基于内存的数据缓存    469
21.10  集成层支持    470
21.11  伸缩性    470
21.12  高可用性    470
21.13  安全性    470
21.14  IDE集成    471
21.15  UML编辑器集成    472
21.16  智能负载均衡    472
21.17  透明地进行无状态容错    472
21.18  群集    472
21.19  Java管理扩展(JMX)    473
21.20  管理支持    473
21.21  热部署    473
21.22  实例池    473
21.23  自动生成EJB组件    474
21.24  完全关机    474
21.25  分布式事务    474
21.26  实时部署    474
21.27  高端消息架构    475
21.28  可选的EJB组件    475
21.29  Web服务    475
21.30  工作流    475
21.31  Open Source    476
21.32  专业化服务    476
21.33  技术之外的考虑    477
21.34  小结    477
第22章  EJB-J2EE集成——构建
         完整的应用    479
22.1  业务问题    479
22.2  预览最终网站    480
22.3  技术需求    483
22.3.1  业务逻辑层    484
22.3.2  前端表示层    489
22.4  示例代码    493
22.5  小结    501
附录A  RMI-IIOP和JNDI教程    503
A.1  Java RMI-IIOP    504
A.1.1  远程方法调用    504
A.1.2  远程接口    506
A.1.4  远程对象实现    507
A.1.5  存根和骨架    508
A.2  对象序列化和参数传递    510
A.2.1  传值    510
A.2.2  对象序列化    510
A.2.3  何时使用transient
      关键字    512
A.2.4  对象序列化
      和RMI-IIOP    512
A.2.5  Java命名
       和目录接口    514
A.2.6  命名和目录服务    514
A.2.7  命名和目录存在的
       问题    516
A.2.8  进入JNDI    516
A.2.9  JNDI的优势    517
A.2.10  JNDI架构    517
A.2.11  JNDI概念    518
A.2.12  JNDI编程    521
A.3  集成RMI-IIOP和JNDI    523
A.3.1  将RMI-IIOP服务器
      绑定到JNDI    524
A.3.2  借助于JNDI查找
      RMI-IIOP服务器    524
A.4  小结     525
附录B  CORBA互操作    527
B.1  何谓CORBA    527
B.2  关注CORBA的意义    528
B.3  理解CORBA工作机理    529
B.4  OMG接口定义语言    530
B.5  OMG IDL映射到具体语言    532
B.6  CORBA提供的服务    533
B.7  引入RMI-IIOP的必要性    534
B.7.1  实现RMI与CORBA
      互操作的必要性    534
B.7.2  合并CORBA
      与RMI    535
B.8  集成RMI和CORBA的
     过程    538
B.8.1  RMI-IIOP客户同
      CORBA对象实现    538
B.8.2  CORBA客户同RMI-IIOP
      对象实现    539
B.8.3  借助于RMI-IIOP
      和CORBA引导    539
B.9  宏伟蓝图——集成CORBA
     和EJB    540
B.9.1  CORBA-EJB互操作的
      局限性    540
B.9.2  示例代码    540
B.10  小结    542
附录C  部署描述符参考指南    543
C.1  如何阅读XML Schema    543
C.2  头和根元素    544
C.3  定义会话Bean    545
C.4  定义实体Bean    546
C.5  定义消息驱动Bean    549
C.6  定义Timer Bean    551
C.7  定义J2EE Web服务    551
C.8  定义环境属性    553
C.9  定义EJB引用    553
C.10  定义安全性    555
C.11  定义资源工厂    556
C.12  定义关系    558
C.13  定义<assembly-descriptor>    560
附录D  EJB查询语言(EJB-QL)    565
D.1  EJB-QL概述    565
D.1.1  简单实例    566
D.1.2  关系的威力    567
D.2  EJB-QL语法    567
D.2.1  FROM从句    568
D.2.2  WHERE从句    569
D.2.3  SELECT从句    571
D.2.4  使用聚合函数    574
D.2.5  ORDER BY从句    574
D.2.6  Boolean表    575
D.3  小结     576
附录E  EJB快速参考指南    579
E.1  会话Bean流程图    579
E.1.2  无状态会话
      Bean流程图    580
E.1.2  有状态会话Bean
      流程图    581
E.2  实体Bean流程图    583
E.3  EJB API参考    586
E.3.1  EJBContext    586
E.3.2  EJBHome    587
E.3.3  EJBLocalHome    588
E.3.4  EJBLocalObject    588
E.3.5  EJBMetaData    589
E.3.6  EJBObject    589
E.3.7  EnterpriseBean    590
E.3.8  EntityBean    590
E.3.9  EntityContext    593
E.3.10  Handle    594
E.3.11  HomeHandle    594
E.3.12  MessageDrivenBean    594
E.3.13  MessageDrivenContext    595
E.3.14  SessionBean    595
E.3.15  SessionContext    596
E.3.16  SessionSynchronization    597
E.3.17  TimedObject    597
E.3.18  Timer    598
E.3.19  TimerHandle    598
E.3.20  TimerService    599
E.4  异常参考    600
E.5  事务参考    601
猜您喜欢

读书导航