问题
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