如何在EJB中管理CMT和BMT?

时间:2011-07-17 12:10:19

标签: java-ee transactions ejb jta

如何管理CMT和BMT?

根据我的理解,容器管理事务是通过JTA实现的,应用程序服务器不支持像tomcat这样的Web服务器。

CMT由事务管理器实现处理,该实现特定于每个应用程序服务器,内部读取ejb-jar.xml并应用 行为。

BMT在java api中的用户事务类的帮助下划分。

上述理解是否正确?

1 个答案:

答案 0 :(得分:3)

是的,这是正确的。还有一些交易细节:

对于CMT,EJB容器还负责实现EJBContext.setRollbackOnly和isRollbackOnly,方法是委托当前事务在异常时回滚事务。

对于BMT,如果在SLSB和singleton的方法结束之前未提交UserTransaction,则EJB容器还负责抛出异常。对于SFSB,它负责在方法结束时暂停用户事务并在下一个方法调用时恢复它们。