java - 工厂返回带有 EJB 注入(inject)字段 Null 的 Bean

标签 java dependency-injection ejb

我有一个 Java 工厂类,其中有一些返回一些 Java Bean 的方法。所有这些 Java Bean 都有一些 DAO 对象作为字段,并使用注释 @EJB 注入(inject)。然而在每种情况下这些 DAO 都是 Null,所以我想我在 EJB 注入(inject)方面遇到了问题。我使用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,...容器将创建并找到它,希望名称正确。 工厂不是必需的。

关于java - 工厂返回带有 EJB 注入(inject)字段 Null 的 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56939722/

相关文章:

java - Spring IoC/DI 中接口(interface)使用 @Component 注解进行注解。可能是什么原因?

java - 验证 guice 模块配置 - 如何使用 SPI?

java - 为什么 final 类不能被 CDI 代理?

jakarta-ee - 如何解决线程 "main"javax.ejb.NoSuchEJBException 中的 EJBCLIENT000079 异常?

java - JPA事务: select right after commit?

java - 如何将数据从java类传递到fragment

java - ActiveMQ如何用一个消费者消费N条消息

java - "reuse"CompletableFuture 是否安全/良好实践

java - Tomcat - 异步 HTTP 调用超慢与 Jetty

java - 没有@Stateless 可以使用@Webservice 注解吗?