容器管理 EJB 中的 Bean 管理事务

Bean Managed Transaction in a Container Managed EJB

我有一个使用容器管理事务的无状态 EJB。我可以在那个 EJB 中有一个可以使用 bean 管理的事务的方法吗?我知道我可以通过使用属性 @TransactionManagement(TransactionManagementType.BEAN)

让整个 EJB 使用 bean 管理的事务

不,您不能在每个方法的基础上在容器管理事务和 bean 管理事务之间切换。您要么需要完全使用 bean 管理的事务,要么需要将您的逻辑拆分为两个单独的 EJB。

(我想不出为什么一定是这种情况的原因。我认为 EJB 规范可以使 BEAN 只是另一种事务属性类型,而不是具有 BMT/CMT 区别。也许有人认为会使交易模型过于复杂,或者没有足够的用例来尝试这种方法。)