EJB中的事务传播

时间:2014-07-12 18:58:58

标签: java transactions ejb

我正在阅读EJB 3.1规范,并且无法与以下场景相关。可以有人用示例解释

•如果客户端请求未与事务关联且实例已与事务T2关联,则容器将使用与实例关联的事务(T2)调用实例。对于无状态会话bean,单例会话bean或消息驱动的bean,这种情况永远不会发生:它只能发生在有状态会话bean中。

•如果客户端与事务T1关联,并且实例已与事务T2关联,则容器将挂起客户端的事务关联,并使用与实例关联的事务上下文(T2)调用该方法。当方法(与任何相关的拦截器方法一起)完成时,容器恢复客户端的事务关联(T1)。对于无状态会话bean,单例会话bean或消息驱动的bean,这种情况永远不会发生:它只能发生在有状态会话bean中。

如果具有事务范围持久性上下文的EJB在有状态会话上调用 使用扩展持久化上下文的bean,抛出错误。为什么不应该暂停无状态会话bean的事务,然后使用与有状态会话bean关联的事务上下文调用该方法。

1 个答案:

答案 0 :(得分:0)

有什么问题?它是关于有状态会话bean。只有这种bean才能在方法调用之间保存事务。因此,如果您调用已有活动事务的有状态会话bean,则您的方法调用将在有状态会话Bean事务中执行。