我在Java中有一个Factory类,其中包含一些返回一些Java Bean的方法。所有这些Java Bean都有一些DAO对象作为字段,并使用注解@EJB注入。但是,在每种情况下,这些DAO都为Null,因此我想我在EJB注入方面遇到了问题。我使用WebLogic进行部署。有解决问题的建议吗?
//Factory class
public class Factory extends AbstractFactory {
@Override
public InterfaceService getService() {
return new ClassBean();
}
}
//Bean class
@Stateless(mappedName = "ClassBean")
@LocalBean
public class ClassBean implements IBeanService {
@EJB(beanName = "ClassDAO")
private ClassDAO classDAO;
public List<String> getList() throws ExpectedModelException {
return classDAO.getStringList(); //this one throws NullPointerException
}
最佳答案
切勿使用new创建Enterprise-Bean。
创建,缓存,删除...由容器完成。
您必须将ClassDao声明为@Stateless或@Singleton,...,然后容器将创建并找到它,希望它们的名称正确。
不需要工厂。