“Unsatisfied Dependencies” - Different Stateless Beans with same Interface

蹲街弑〆低调 提交于 2019-12-11 15:25:26

问题


I have three @Stateless Beans with the same interface.

public interface ReportService
{
    List<String> determineRelevantData();

    Report generate(ReportRequest request, Locale locale) throws ServiceFailedException;
}

I inject the beans in one facade bean:

@Stateless
public class ReportServiceFacadeBean implements ReportServiceFacadeLocal
{
    @Inject
    private FirstReportBean firstReport;

    @Inject
    private SecondReportBean secondReport;

    @Inject
    private ThirdReportBean thirdReport;

    [...]
}

When I deploy it this way, I get:

WELD-001408: Unsatisfied dependencies for type SecondReportBean with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private ReportServiceFacadeBean.secondReport

When I uncomment the interface in the implementing beans the server starts up without any error. What am I missing here?


回答1:


EJB beans have a bit different bean types, which are then used for injection, compared to CDI beans. Namely you will want to inject EJB beans by their client-visible parts, meaning interfaces (unless you have no-interface view).

This is fully backed by spec, here is one chapter from CDI spec that mentions it (with links to other).

In your case you will have to introduce qualifiers and then inject the beans like:

@Inject
@SomeQualifier
ReportService firstService;


来源:https://stackoverflow.com/questions/51516159/unsatisfied-dependencies-different-stateless-beans-with-same-interface

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!