具有更多注入EJB实例的无状态EJB

时间:2011-08-31 11:43:16

标签: java java-ee ejb stateless-session-bean

我知道无状态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) )?

1 个答案:

答案 0 :(得分:2)

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

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

请记住容器可能创建两个Master_EJB实例 - 它依赖于容器本身和当前情况(同样,容器可能决定仅使用一个Master_EJB实例处理请求)。 / p>