我在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,...,然后容器将创建并找到它,希望它们的名称正确。
不需要工厂。

10-06 07:36