标题：ejb 3实战
基本信息
书名:ejb3实战
书号:17789
作者:debup andare zarahman dereklane
图书简介
本书详细介绍了使用ejb3进行企业级开发的方方面面，包括ejb3基础、使用ejb3构造业务逻辑、java持久化api、ejb3的实际应用、移植性和互操作性，等等。基于现实场景，本书提供了大量实用的范例代码、最佳实践、设计模式和性能优化技巧。通过对这些知识的学习，开发者能创建健壮的、可扩展的、基于标准的解决方案。
本书是一本快速上手指南。对于ejb的初学者而言，本书提供了精彩的入门指导；对于从ejb2迁移到ejb3的有经验的开发者来说，本书在ejbapi、java持久化等多个方面提供了详细的参考。
书籍目录
目录:
第一部分ejb概述
第1章ejb3是什么2
1.1ejb概述3
1.1.1ejb作为组件3
1.1.2ejb作为框架4
1.1.3分层架构和ejb5
1.1.4为什么选择ejb38
1.2了解ejb类型9
1.2.1会话bean10
1.2.2消息驱动bean11
1.2.3实体和jpa11
1.3深入ejb12
1.3.1访问ejb服务：ejb容器13
1.3.2访问jpa服务：持久化提供器13
1.3.3使用ejb服务的功能14
1.4ejb的新生15
1.4.1hellouser示例16
1.4.2简化的程序设计模型17
1.4.3用注解，不用部署描述文件17
1.4.4依赖注入与jndi查找18
1.4.5简化的持久化api18
1.4.6可进行单元测试的pojo组件19
1.4.7ejb3和spring20
1.5小结21
第2章ejb3初体验22
2.1新特性：简化ejb23
2.1.1使用注解替换部署描述文件23
2.1.2依赖注入简介26
2.2actionbazaar应用程序简介27
2.2.1从构造的一个子集开始27
2.2.2基于ejb3的解决方案28
2.3使用会话bean构造业务逻辑30
2.3.1使用无状态bean30
2.3.2无状态bean客户端31
2.3.3使用有状态bean33
2.3.4有状态bean客户端36
2.4消息和消息驱动bean38
2.4.1生成账单消息38
2.4.2使用订单账单消息处理器mdb41
2.5使用ejb3jpa持久化数据42
2.5.1使用jpa43
2.5.2使用entitymanager45
2.6小结47
第二部分使用ejb3构造业务逻辑
第3章使用会话bean构造业务逻辑50
3.1会话bean简介50
3.1.1为什么使用会话bean51
3.1.2会话bean基础52
3.1.3了解程序设计原则54
3.1.4会话状态和会话bean类型55
3.1.5bean生命周期回调55
3.2无状态会话bean57
3.2.1bidmanagerbean示例58
3.2.2使用@stateless注解60
3.2.3指定业务接口61
3.2.4使用bean生命周期回调63
3.3有状态会话bean65
3.3.1附加程序设计原则66
3.3.2bidderaccountcreatorbean示例66
3.3.3有状态bean的业务接口69
3.3.4有状态bean的生命周期回调70
3.4会话bean客户端72
3.4.1使用@ejb注解73
3.4.2注入和有状态会话bean74
3.5有状态bean的性能注意事项74
3.5.1有效地使用有状态会话bean74
3.5.2有状态会话bean的替代方式75
3.6会话bean最佳实践76
3.7小结76
第4章消息和开发mdb77
4.1消息概念77
4.1.1面向消息的中间件78
4.1.2actionbazaar中的消息78
4.1.3消息模型80
4.2java消息服务简介81
4.2.1开发jms消息生产者82
4.2.2jms消息接口83
4.3使用消息驱动bean85
4.3.1为什么使用mdb85
4.3.2程序设计原则86
4.3.3使用mdb开发消息消费者87
4.3.4使用@messagedriven注解89
4.3.5实现messagelistener89
4.3.6使用activationconfig-property90
4.3.7使用bean生命周期回调93
4.3.8从mdb发送jms消息95
4.3.9管理mdb事务96
4.4mdb最佳实践96
4.5小结97
第5章学习高级ejb概念99
5.1ejb内幕99
5.1.1幕后的ejb99
5.1.2ejb上下文：访问运行时环境100
5.2使用依赖注入和jndi访问资源103
5.2.1使用@resource注入资源103
5.2.2@resource注解实际应用107
5.2.3查找资源和ejb109
5.3ejb中的aop：拦截器110
5.3.1aop是什么111
5.3.2拦截器是什么111
5.3.3指定拦截器113
5.3.4实现业务拦截器114
5.3.5拦截器类中的回调方法117
5.4调度：ejb3计时器服务118
5.4.1计时器是什么118
5.4.2使用计时器服务119
5.4.3何时使用ejb计时器123
5.5小结124
第6章事务和安全125
6.1了解事务125
6.1.1actionbazaar中的事务解决方案126
6.1.2acid属性126
6.1.3事务管理内幕128
6.1.4两阶段提交129
6.1.5ejb中的事务管理130
6.2容器管理的事务130
6.2.1使用cmt实现snag-it订购130
6.2.2@transactionmanagement注解131
6.2.3@transactionattribute注解132
6.2.4使cmt使用回调134
6.2.5事务和异常处理135
6.3bean管理的事务138
6.3.1使用bmt实现snag-it订购138
6.3.2获得usertransaction139
6.3.3使用usertransaction140
6.3.4bmt的优缺点141
6.4分析ejb安全142
6.4.1验证和授权142
6.4.2用户、组和角色142
6.4.3actionbazaar中的安全问题143
6.4.4ejb3和javaee安全144
6.4.5声明式安全146
6.4.6使用ejb程序式安全148
6.5小结150
第三部分研究jpa
第7章实现域模型152
7.1域建模和jpa152
7.1.1介绍域模型153
7.1.2actionbazaar问题域153
7.1.3域模型参与者155
7.1.4ejb3java持久化api156
7.1.5域对象作为java类157
7.2使用jpa实现域对象159
7.2.1@entity注解159
7.2.2持久化实体数据160
7.2.3指定实体身份163
7.2.4@embeddable注解167
7.3实体关系168
7.3.1@onetoone168
7.3.2@onetomany和@manytoone171
7.3.3@manytomany173
7.4小结175
第8章对象关系映射176
8.1阻抗失配176
8.1.1把对象映射到数据库177
8.1.2介绍o/r映射180
8.2映射实体181
8.2.1指定表183
8.2.2映射列184
8.2.3使用@enumerated185
8.2.4映射clob和blob186
8.2.5映射临时类型186
8.2.6把实体映射到多个表187
8.2.7生成主键188
8.2.8映射可嵌入类190
8.3映射实体关系192
8.3.1映射一对一关系193
8.3.2一对多和多对一196
8.3.3多对多198
8.4映射继承200
8.4.1单表策略201
8.4.2联结表策略202
8.4.3每个类一个表策略204
8.4.4映射多态关系206
8.5小结206
第9章使用entitymanager操作实体207
9.1介绍entitymanager207
9.1.1entitymanager接口208
9.1.2实体的生命周期210
9.1.3持久化上下文、作用域和entitymanager212
9.1.4在actionbazaar中使用entitymanager213
9.2创建entitymanager实例215
9.2.1容器管理的entitymanager215
9.2.2应用程序管理的entitymanager217
9.3管理持久化操作222
9.3.1持久化实体222
9.3.2通过主键检索实体226
9.3.3更新实体230
9.3.4删除实体232
9.3.5通过转储清除控制更新233
9.3.6刷新实体234
9.4实体生命周期监听器236
9.4.1使用实体监听器236
9.4.2默认监听器类238
9.4.3监听器类的执行顺序和排除238
9.5实体操作最佳实践239
9.6小结240
第10章使用查询api和jpql检索实体241
10.1介绍查询api241
10.1.1背景241
10.1.2剖析查询242
10.1.3定义命名查询243
10.2执行查询244
10.2.1创建查询实例244
10.2.2使用query接口246
10.2.3指定查询提示250
10.3介绍jpql251
10.3.1定义语句类型251
10.3.2使用from子句253
10.3.3条件表达式和操作256
10.3.4使用jpql函数259
10.3.5使用select子句261
10.3.6使用聚合263
10.3.7排序查询结果264
10.3.8使用子查询265
10.3.9联结实体266
10.3.10批更新和批删除268
10.4原生sql查询268
10.4.1使用原生sql的动态查询269
10.4.2使用命名原生sql查询270
10.5小结271
第四部分ejb3的实际应用
第11章打包ejb3应用程序274
11.1给应用程序打包275
11.1.1剖析ear文件276
11.1.2加载ear模块277
11.2分析类加载279
11.2.1类加载基础279
11.2.2分析典型的父委托模型281
11.2.3javaee应用程序中的类加载282
11.2.4javaee模块之间的相关性282
11.3打包会话bean和消息驱动bean284
11.3.1打包ejb-jar284
11.3.2部署描述文件与注解285
11.3.3使用部署描述文件覆写注解288
11.3.4指定默认拦截器设置289
11.3.5使用厂商专有的注解和描述文件289
11.4打包实体290
11.4.1暴露持久化模块291
11.4.2使用persistence.xml描述持久化模块291
11.4.3使用orm.xml执行o/r映射296
11.5最佳实践和常见部署问题299
11.5.1打包和部署最佳实践299
11.5.2诊断常见部署问题300
11.6小结301
第12章有效地跨越应用程序层集成ejb3
12.1设计模式和web技术302
12.1.1表现层303
12.1.2使用eao模式305
12.1.3介绍sessionfacade模式308
12.2从web层访问会话bean312
12.2.1使用依赖注入访问会话bean313
12.2.2从帮助器类引用会话bean314
12.2.3处理事务316
12.2.4处理有状态会话bean317
12.3从web层使用jpa318
12.3.1使用容器管理的实体管理器318
12.3.2通过jta事务使用应用程序管理的entitymanager320
12.3.3在容器外访问应用程序管理的entitymanager321
12.4小结323
第13章驯服ejb：性能和可伸缩性324
13.1处理实体锁定问题325
13.1.1了解锁定类型325
13.1.2乐观锁定和实体版本327
13.1.3entitymanager和锁定模式328
13.2提高实体性能330
13.2.1重新建模和重新设计计划330
13.2.2优化jdbc层333
13.2.3减少数据库操作334
13.2.4提高查询性能337
13.2.5缓存340
13.3提高ejb3组件的性能344
13.3.1会话bean性能344
13.3.2提高mdb性能346
13.4集群ejb应用程序347
13.4.1协同定位架构348
13.4.2无状态会话bean的负载平衡348
13.4.3集群有状态会话bean350
13.4.4实体和集群缓存352
13.5小结353
第五部分移植和互操作性
第14章移植到ejb3356
14.1与ejb2的向后兼容性和互操作性356
14.1.1将ejb2和ejb3打包在一起357
14.1.2从ejb3调用ejb2357
14.1.3从ejb2使用ejb3358
14.2移植会话bean360
14.2.1转换接口和bean类360
14.2.2资源使用363
14.2.3事务和安全设置364
14.2.4客户端应用程序364
14.3移植消息驱动bean365
14.4把cmp2实体移植到ejb3jpa366
14.4.1重新设计域模型366
14.4.2dto用作实体369
14.4.3实体bean类和接口370
14.4.4客户端应用程序376
14.5移植jdbcdao使用ejb3jpa377
14.5.1标识实体378
14.5.2重新构造dao实现类使用entitymanagerapi379
14.5.3sql查询转换为jpql380
14.6帮助o/r框架使用ejb3jpa381
14.7移植方法382
14.7.1策略383
14.7.2手工与自动383
14.8小结383
第15章把ejb暴露为web服务384
15.1web服务是什么385
15.1.1认识web服务组件386
15.1.2web服务样式391
15.1.3开发web服务的方法391
15.2jax-ws：javaee5web服务平台392
15.2.1介绍web服务平台392
15.2.2与pojo相比，为什么选择ejb用于web服务393
15.3使用jax-ws2.0开发ejbweb服务393
15.3.1使用@webservice注解395
15.3.2使用@soapbinding指定web服务样式396
15.3.3使用@webmethod注解397
15.3.4使用@webparam注解399
15.3.5使用@webresult注解400
15.3.6使用@oneway和@handlerchain注解400
15.4从ejb访问web服务401
15.4.1访问placebidweb服务401
15.4.2ejb作为web服务客户403
15.5web服务开发的最佳实践404
15.6小结405
第16章ejb3和spring406
16.1spring框架简介407
16.1.1spring框架的优势407
16.1.2控制反转原理408
16.1.3关注分离原理408
16.2通过spring使用jpa409
16.2.1构造spring的jpaeao410
16.2.2配置spring使用jpa412
16.3结合ejb3和spring的功能415
16.3.1开发支持spring的ejb415
16.3.2从springbean使用会话bean417
16.4小结418
附录armi和jndi420
附录b复习关系数据库426
附录c注解参考431
附录d部署描述文件参考447
附录e安装和配置javaee5sdk462
资源472
索引475[1]