深入理解 EJB 事务管理
1. EJB 服务概述
EJB 的一大优势在于提供各类服务,让开发者能专注于应用的业务逻辑。此前我们已了解到一些服务,如持久化管理。接下来,我们将深入探讨另外两项服务:事务管理和安全管理,以及 EJB 异常处理机制。
在 EJB 服务中,有以下要点需要注意:
- 实体 Bean 不能调用 UserTransaction
接口中的方法。
- 当 Bean 实例抛出系统异常时,容器会销毁该 Bean 实例并回滚其事务。
- 应用的用户会先转变为 Principal
,再被赋予安全角色,如经理。
2. EJB 事务简介
事务支持是 EJB 架构的重要优势。在现实生活中,事务无处不在,如在线买书、ATM 取款、商店购物等。因此,处理现实问题的企业应用必须具备事务处理能力。
事务具有明确的开始和结束,标记这些边界的过程称为事务界定。事务界定有两种方式:
- Bean 管理事务(BMT)界定 :开发者自行在 Bean 方法中编写代码来界定事务。
- 容器管理事务(CMT)界定 :由容器在部署描述符中声明事务边界。
同时,EJB 提供了两个包含事务相关方法的接口: UserTransaction
和 EJBContext
,可用于事务界定和其他事务相关任务。
3. 理解事务
3.1 事务定义
事