深入理解 Bean 管理事务的 EJB 开发与应用
1. 为何需要 Bean 管理事务
在 Java 2 企业版(J2EE)平台中,事务管理是确保数据一致性和完整性的关键。容器管理事务(CMT)是 J2EE 推荐的事务管理方式,它通过 EJB 的部署描述符进行声明式配置,由容器在幕后管理事务。然而,在某些情况下,CMT 可能无法满足特定的事务处理需求。
1.1 使用 Bean 管理事务的场景
- 细粒度控制 :当 EJB 的某个方法必须与单个事务关联,或者完全不关联事务时,由于 CMT 在部署描述符中设置这些条件的局限性,可考虑使用 Bean 管理事务(BMT)。
- 分布式事务 :在管理多个资源的分布式事务场景中,BMT 可实现对事务边界的精细控制。以下是一个伪代码示例,展示了业务方法如何跨多个资源管理器控制事务边界:
businessMethod(...)
...
begin transaction
...
update database tableA
send message to a queueA
...
if (conditionA)
send message to dead-letter queue
commit transaction
else
rollback transaction
begin transaction
update database tableA
send another message t