3

我知道无状态 EJB 存储在池中并根据需要进行实例化,我的问题是,当有更多 EJB 依赖项时会发生什么,例如:

@Remote
@Stateless
public class Master_EJB{
     @EJB
     private EJB_A ejb_A;

     @EJB
     private EJB_B ejb_B;
}

EJB_A 和 EJB_B 也是无状态的 EJB。

在最坏的情况下,如果同时有两个请求,服务器将从池中检索两个 Master_EJB 实例(或在需要时创建)。

但是,如果从这两个调用中,一个只需要 EJB_A 而另一个只需要 EJB_B,那么需要多少个实例:4(2 Master_EJB + 1 EJB_A + 1 EJB_B)或 6(2 Master_EJB + 2 EJB_A + 2 EJB_B)?

4

1 回答 1

3

EJB_A 和 EJB_B 是无状态的还是有状态的?

如果是无状态的,答案取决于使用的容器/池类型和最近的情况(请求数、服务器负载等)。如果有状态和容器将实例化 2 个 Master_EJB 实例,则将实例化 EJB_A 的两个实例,并且还将实例化 EJB_B 的两个实例。

请记住,容器可能会创建两个 Master_EJB 实例 - 这取决于容器本身和当前情况(同样,容器可能决定仅使用一个 Master_EJB 实例来处理请求)。

于 2011-08-31T11:54:05.000 回答