【问题标题】:How CMT and BMT are managed in EJB?在 EJB 中如何管理 CMT 和 BMT?
【发布时间】:2011-10-07 02:42:04
【问题描述】:
如何管理 CMT 和 BMT?
据我了解,容器管理事务是通过 JTA 实现的,JTA 由应用服务器支持,而不是像 tomcat 这样的网络服务器。
CMT 由事务管理器实现处理,该实现特定于每个应用程序服务器,它在内部读取 ejb-jar.xml 并应用
行为。
BMT 是在 java api 中的 user-transaction 类的帮助下划分的。
以上理解正确吗?
【问题讨论】:
标签:
jakarta-ee
transactions
ejb
jta
【解决方案1】:
是的,没错。更多交易细节:
对于 CMT,EJB 容器还负责通过委托给当前事务来实现 EJBContext.setRollbackOnly 和 isRollbackOnly,方法是在出现异常时回滚事务。
对于 BMT,如果在 SLSB 和单例的方法结束之前未提交 UserTransaction,则 EJB 容器还负责引发异常。对于 SFSB,它负责在方法结束时暂停用户事务,并在下一次方法调用时恢复它们。