1:在 Session Bean 的类上加上 Bean 管理的事务声明:@TransactionManagement(TrahsactionManagerType.BEAN)
2:在 session bean 中加上 UserTransaction 一个成员变量,使用 @Resource 注入
@Resource
private UserTransaction ut;
或者先注入 EjbContext,再使用 EjbContext 中获得 UserTransaction 对象
@Resource
private EjbContext ejbContext;
3:使用 UserTransaction 的 begin(), commit(), rollback() 进行操作
需要注意的是:
1:@TransactionManagement(TrahsactionManagerType.BEAN) 一加,这个 bean 所有的事务都必须手工控制,这时这个 bean 称为 BMT,否则就是容器管理的事务 CMT
2:stateless session bean 自己管理的事务必须在一个方法内开始和结束,stateful session bean 可以在一个方法中开始,在另外一个方法中结束。