EJB有两种事务处理方式,这两种方式通常都是建立在JTA基础之上的。(注意EJB是必须在容器中才能运行的,而JTA事务只能运行在EJB容器或Web容器中)一种是通过容器管理事务(CMT)以声明方式来管理事务;另一种则在EJB内部使用事务管理代码自己管理事务,这种称为Bean管理事务(BMT)。
一、容器管理事务
当使用容器管理事务时,业务方法不应该调用任何可能与容器所设置的事务边界冲突的方法,如下情形是被禁止的:
禁止调用Connection接口的commit、setAutoCommit和rollback方法
禁止调用EJBContext的getUserTransaction方法。
禁止调用UserTransaction的任何方法。
二、Bean管理事务
Bean管理事务可有开发者决定到底是使用JTA事务还是使用JDBC事务。
对于Bean管理事务策略来说,程序代码中不要调用EJBContext接口中的getRollbackOnly和setRollbackOnly方法,允许调用UserTransaction来手动控制事务,这就是BMT比CMT灵活的地方、
2090

被折叠的 条评论
为什么被折叠?



