如何管理CMT和BMT?
根据我的理解,容器管理事务是通过JTA实现的,应用程序服务器不支持像tomcat这样的Web服务器。
CMT由事务管理器实现处理,该实现特定于每个应用程序服务器,内部读取ejb-jar.xml并应用 行为。
BMT在java api中的用户事务类的帮助下划分。
上述理解是否正确?
答案 0 :(得分:3)
是的,这是正确的。还有一些交易细节:
对于CMT,EJB容器还负责实现EJBContext.setRollbackOnly和isRollbackOnly,方法是委托当前事务在异常时回滚事务。
对于BMT,如果在SLSB和singleton的方法结束之前未提交UserTransaction,则EJB容器还负责抛出异常。对于SFSB,它负责在方法结束时暂停用户事务并在下一个方法调用时恢复它们。