【发布时间】:2015-08-01 13:01:14
【问题描述】:
我想确保正确理解事务传播,请帮助。
假设我们有一个无状态的EJB_A,它暴露了应用层的服务。
它使用本地无状态 EJB_B , EJB_C ,
它们都使用容器管理的 EntityManager。
EJB_B 和 EJB_C 使用彼此的方法。
如果我理解正确,每个 EJB 都会拥有自己的 EntityManager 实例来管理相同的持久性单元。
假设EJB_A,在一个客户端请求中,使用bot EJB_B和EJB_C的方法来创建一个事务,例如:
@Stateless(name = "myejb")
public class EJB_A implements Interface_EJB_A
{
@EJB
private EJB_B ejb_b;
@EJB
private EJB_C ejb_c;
public String method()
{
ejb_b.call();
ejb_c.call();
}
...
}
注入 EJB_C 的实体管理器如何知道有一个事务正在进行
如果它对注入 EJB_B 的 EntityManager 的存在一无所知?
这是我很难掌握的容器之王添加的魔法......
【问题讨论】:
标签: java jpa ejb remote-access