我的服务类中使用了很多会话bean类。每次在服务类中需要时定义会话bean引用都很痛苦。
因此,我只是想知道我是否可以使用如下。即使我只需要SessionBean1,在初始化MyService类时是否初始化了这些EJB?如果是这样,这可能有点矫枉过正。
public class BaseService {
@EJB
protected SessionBean1 ejb1;
@EJB
protected SessionBean1 ejb2;
@EJB
protected SessionBean1 ejb3;
}
@Stateless
public class MyService extends BaseService {
public void methodA() {
super.ejb1.findAll();
}
}
由于
答案 0 :(得分:0)
是的,规范要求容器支持超类注入。
这取决于“初始化”的含义。如果您自己创建MyService实例,则注入根本不起作用; MyService需要由容器创建(是servlet,CDI bean,EJB bean等)。然后,容器显然必须做一些工作来创建一个代理对象以注入到字段中,但它可能不会创建实际的bean实例。对于无状态会话bean,在实际调用方法之前,可能无法从Bean池创建或分配实际的bean实例。对于有状态会话bean,容器将在创建MyService时创建实例。