【问题标题】:CDI dependency injection issueCDI 依赖注入问题
【发布时间】:2014-12-27 12:59:27
【问题描述】:

我在 Wildfly 应用服务器中正确部署了 EJB。我可以使用 @EJB 注释注入它,但是现在,我想将它包装到一个 cdi bean 中,以便能够使用 @Inject 注释注入它。为此,我创建了一个类 ResourceProducer,它使用 @EJB 注入 EJB,然后将其包装到 cdi bean 中。

代码如下:

public class ResourceProducer {

@EJB
BusinessHandler businessHandler;



@Produces
@Named("myBusinessHandler")
public BusinessHandler getMyBusinessHandler() {
    return businessHandler;
}
}   

然后在注入点我使用

注入 bean
@Inject 
@Named("myBusinessHandler")
private BusinessHandler handler;

但是 Eclipse 告诉我“没有 bean 有资格注入到注入点 [JSR-299 §5.2.1]”。我做错了什么?你有没有看到我遗漏的东西。任何帮助将不胜感激。

谢谢!!

【问题讨论】:

  • 只是好奇:您可以通过@Inject 直接注入EJB,为什么要使用包装器?

标签: jakarta-ee jboss dependency-injection cdi wildfly


【解决方案1】:

尝试使用以下代码将 EJB 注入 CDI bean。

ResourceProducer.java

@Named
@SessionScoped // or some other scope
public class ResourceProducer { // Your CDI Bean
    @Inject
    BusinessHandler businessHandler;
}

您的 EJB
BusinessHandler.java

@Stateless
public class BusinessHandler(){ // Your EJB
    ...
}

这就是将 EJB 注入到 CDI bean 中应该做的所有事情。

【讨论】:

    猜你喜欢
    • 2015-11-21
    • 2019-05-26
    • 2015-04-22
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多