EJB 核心规范
正式版
译者:卫建军
2008/1/27
译者:卫建军 JANTY.WEI@GMAIL.COM
1 / 351
译者序
Java 是当前 IT 领域中比较流行的技术之一。J2EE 是当前比较流行的企业级
应用架构。本人一直致力于 J2EE 架构的学习和研究,但是总是对英文文档有不
可言语的恐惧。我想很多 J2EE 爱好者和我有同样的感觉。这样就影响了我们深
入学习 J2EE 原始规范的兴趣。但是 J2EE 原始的规范文档对我们深入理解 J2EE
有很大的帮助,因为它阐述了规范的来龙去脉,以及违反了规范会造成什么样的
影响。了解了这些缘由和影响,会使我们对 J2EE 架构有更深层次的理解。这也
是我翻译该规范的动力所在。
由于本人的英语水平有限,翻译中难免会出现错误和拗口之处,请大家多多
指教。
这次主要翻译的规范有《EJB3 规范简化版》、《J2EE5.0 规范》、《EJB 核心规
范》、《EJB3 持久化规范》和《JMS1.1 规范》。希望对大家有所帮助。
本文档版权归原作者所有。
在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。
如需部分或者全文引用,请事先征求作者意见。
卫建军
2008-1-5 于北京
译者:卫建军 JANTY.WEI@GMAIL.COM
2 / 351
目录
1 介绍......................................................................................................... 16
1.1 目标读者.......................................................................................... 16
1.2 EJB3.0 的新特性 ............................................................................. 16
1.3 EJB3.0 专家组 ................................................................................. 17
1.4 文档的组织...................................................................................... 17
1.5 文档约定.......................................................................................... 18
2 概述......................................................................................................... 18
2.1 总体目标.......................................................................................... 18
2.2 EJB 角色 .......................................................................................... 19
2.2.1 企业 bean 提供者 ..................................................................... 19
2.2.2 应用组装者............................................................................... 20
2.2.3 部署人员................................................................................... 20
2.2.4 EJB 服务器提供商 ................................................................... 21
2.2.5 EJB 容器提供者 ....................................................................... 21
2.2.6 持久化提供商........................................................................... 22
2.2.7 系统管理员............................................................................... 23
2.3 企业 bean ......................................................................................... 23
2.3.1 企业 bean 的特性 ..................................................................... 23
2.3.2 可伸缩模型............................................................................... 24
2.4 会话,实体和消息驱动对象.......................................................... 24
2.4.1 会话对象................................................................................... 24
2.4.2 消息驱动对象........................................................................... 25
2.4.3 实体对象................................................................................... 25
2.5 与 CORBA 协议的标准映射 .......................................................... 26
2.6 与 Web 服务协议的映射 ................................................................ 26
3 会话 bean 的客户端视图 ....................................................................... 26
3.1 概述.................................................................................................. 26
译者:卫建军 JANTY.WEI@GMAIL.COM
3 / 351
3.2 Local、Remote 和 Web 服务客户端视图 ...................................... 28
3.2.1 Remote 客户端 ......................................................................... 28
3.2.2 Local 客户端 ............................................................................ 28
3.2.3 Local 或 Remote 客户端视图的选择 ...................................... 29
3.2.4 Web 服务客户端 ...................................................................... 30
3.3 EJB 容器 .......................................................................................... 31
3.4 用 EJB3.0 简化 API 书写的会话 bean 客户端视图 ...................... 31
3.4.1 获取会话 bean 的业务接口 ..................................................... 31
3.4.2 会话 bean 的业务接口 ............................................................. 32
3.4.3 会话对象生命周期的客户端视图........................................... 32
3.4.4 获得和使用会话 bean 的例子 ................................................. 33
3.4.5 会话对象标识........................................................................... 34
3.5 无状态会话 bean 的 Web 服务客户端视图 ................................... 35
3.5.1 JAX-WS web 服务客户端 ....................................................... 36
3.5.2 JAX-RPC Web 服务客户端 ..................................................... 37
3.6 用 EJB2.1 客户端视图 API 书写的远程核本地客户端视图 ....... 37
4 会话 bean 组件规约 ............................................................................... 37
4.1 概述.................................................................................................. 38
4.2 有状态会话 bean 的会话状态 ........................................................ 39
4.2.1 实例钝化和会话状态............................................................... 39
4.2.2 在会话状态上事务回滚的影响............................................... 41
4.3 会话 bean 实例和容器间的协议 .................................................... 42
4.3.1 要求的会话 bean 元数据 ......................................................... 42
4.3.2 依赖注入................................................................................... 42
4.3.3 SessionContext 接口 ................................................................. 42
4.3.4 会话 bean 的生命周期回调拦截器方法 ................................. 44
4.3.5 可选的 SessionBean 接口 ........................................................ 44
4.3.6 由无状态会话 bean 使用的 MessageContext 接口 ................ 45
译者:卫建军 JANTY.WEI@GMAIL.COM
4 / 351
4.3.7 有状态会话 bean 可选的 SessionSynchronization 接口......... 46
4.3.8 无状态会话 bean 的超时回调 ................................................. 47
4.3.9 业务方法代理........................................................................... 47
4.3.10 会话 bean 的创建 .............................................................. 47
4.3.11 有状态会话 bean 的删除 .................................................. 49
4.3.12 会话 bean 的业务方法拦截器方法 .................................. 49
4.3.13 序列化会话 bean 的方法 .................................................. 49
4.3.14 会话 bean 方法的事务上下文 .......................................... 50
4.4 有状态会话 bean 的状态图 ............................................................ 51
4.4.1 在有状态会话 bean 类的方法中允许的操作 ......................... 54
4.4.2 异常处理................................................................................... 58
4.4.3 错失调用 PreDestroy................................................................ 59
4.4.4 对事务的限制........................................................................... 59
4.5 无状态会话 bean ............................................................................. 60
4.5.1 无状态会话 bean 状态图 ......................................................... 61
4.5.2 可以在无状态会话 bean 类的方法内执行的操作 ................. 62
4.5.3 异常处理................................................................................... 66
4.6 Bean 提供者的责任 ........................................................................ 67
4.6.1 类和接口................................................................................... 67
4.6.2 会话 bean 类 ............................................................................. 67
4.6.3 生命周期回调拦截器方法....................................................... 68
4.6.4 ejbCreate<METHOD>方法 ...................................................... 69
4.6.5 业务方法................................................................................... 70
4.6.6 会话 bean 的业务接口 ............................................................. 70
4.6.7 会话 bean 的远程接口 ............................................................. 71
4.6.8 会话 bean 的远程 home 接口 .................................................. 72
4.6.9 会话 bean 的本地接口 ............................................................. 73
4.6.10 会话 bean 的本地 home 接口 ........................................... 73