Java EJB不明确依赖项:如何指定要注入的类
我试图在EJB中注入一个对象,如下所示:Java EJB不明确依赖项:如何指定要注入的类,java,jakarta-ee,dependency-injection,ejb,cdi,Java,Jakarta Ee,Dependency Injection,Ejb,Cdi,我试图在EJB中注入一个对象,如下所示: @Stateless @Path("/auth") public class Login { @Inject UsernamePasswordCredentials credentials; 问题是UsernamePasswordCredentials有一个子类,并且两个类都有相同的限定符,这会导致依赖项不明确。如何指定要注入父类而不是子类的实例?错误消息如下所示: @Stateless @Path("/auth") public class Log
@Stateless
@Path("/auth")
public class Login {
@Inject
UsernamePasswordCredentials credentials;
问题是UsernamePasswordCredentials有一个子类,并且两个类都有相同的限定符,这会导致依赖项不明确。如何指定要注入父类而不是子类的实例?错误消息如下所示:
@Stateless
@Path("/auth")
public class Login {
@Inject
UsernamePasswordCredentials credentials;
UsernamePasswordCredentials类型与限定符@Default的依赖关系不明确
带有限定符[@Any@Default]的托管Bean[class org.picketlink.idm.credential.UsernamePasswordCredentials]
带有限定符[@Any@Default]的托管Bean[class org.picketlink.idm.credential.TOTPCredentials]
您可以使用编程查找机制来限制所需bean的实际类型:
@Inject
Instance<UsernamePasswordCredentials> credInst;
public UserNamePasswordCredentials getCredentials() {
return credInst.select(UsernamePasswordCredentials.class).get();
}
@Inject
实例credInst;
公共用户名密码凭据getCredentials(){
返回credInst.select(UsernamePasswordCredentials.class).get();
}
除此之外,我不是纠察链接专家,但我认为您在框架上做了一些错误的事情。Picket Link CDI集成是精心设计的,因此我有点困惑您在标准使用中可能会遇到这样的问题。我认为您应该在picketlink用户论坛上询问,如果我不得不猜测,您不打算注入这些类。JAR中没有beans.xml是它们的来源。这些类不是来自CDI集成。因为他们都是独立的,所以他们不会帮助你——你可能需要一个定制制作人。