我知道无状态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) )?
答案 0 :(得分:2)
EJB_A和EJB_B是无状态还是有状态的?
如果是无状态,则答案取决于所使用的容器/池类型和最近情况(请求数,服务器负载等)。 如果有状态和容器将实例化2个Master_EJB实例,那么将实例化EJB_A的两个实例,并且还将实例化两个EJB_B实例。
请记住容器可能创建两个Master_EJB实例 - 它依赖于容器本身和当前情况(同样,容器可能决定仅使用一个Master_EJB实例处理请求)。 / p>