如果CDI容器使用@Inject
注入EJB,因为该CDI具有范围,这意味着此EJB将具有范围,其生命周期将由CDI容器而不是EJB容器控制?
或者CDI容器只注入,生命周期由EJB容器控制?
例如: 我实现了一个SLSB,它的生命周期由EJB容器控制。这意味着EJB容器将控制bean的创建,汇集和销毁。
默认情况下,CDI bean具有Dependent范围。如果我使用@Inject
注入此SLSB,CDI将控制bean的生命周期,以便每次创建和销毁父类时都会创建和销毁它?如果确实如此,则EJB会丢失并发特征(bean池)。
答案 0 :(得分:1)
来自bkail's answer on a similar question:
@Inject版本将尊重EJB的范围。例如,使用@EJB将SFSB注入到servlet中是没有意义的,因为每个请求只存在一个SFSB。使用@Inject将@SessionScoped SFSB注入servlet意味着你有一个CDI代理,可以根据需要为每个会话创建一个新的SFSB。