gpt4 book ai didi

JAVA EE 6 在有状态 EJB 之间共享实例

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:28 24 4
gpt4 key购买 nike

我想我在这里有一个基本的理解问题,我希望有人能向我解释一下。

假设我们有一个有状态的 EJB_A 和一个有状态的 EJB_B 以及一个 session 范围的 ManagedbeanA:

@Stateful
@LocalBean
public class EJB_A {
}

@Stateful
@LocalBean
public class EJB_B {
@EJB
EJB_A ejb;
}
@ManagedBean
@SessionScoped
public class ManagedBeanA {
@EJB
EJB_A ejb;
}

在 ManagedBeanA 中,创建了 EJB_A。现在,当我使用将 EJB_A 作为属性的 EJB_B 时,会在 EJB_B 中创建 EJB_A 的新实例。它与之前在 ManagedBeanA 中创建的 EJB_A 实例不同。

我不明白这一点,因为我认为有状态 EJB 的全部要点是,对于每个客户端,只有一个实例由 EJB 容器创建、共享和管理。有人可以向我解释一下吗?并且请解释我如何才能实现一个 EJB 的同一个实例被多个其他 EJB 共享?

谢谢

最佳答案

是的,您混淆了不同的概念和不同的 APIS...我宁愿使用 @Inject 而不是 @EJB 并指定注入(inject)实例的范围..

@Stateful
@LocalBean
public class EJB_A {
}

@Stateful
@LocalBean
public class EJB_B {
@Inject @SessionScoped
EJB_A ejb;
}
@ManagedBean
@SessionScoped
public class ManagedBeanA {
@Inject @SessionScoped
EJB_A ejb;
}

关于JAVA EE 6 在有状态 EJB 之间共享实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com