我正试图在我的EJB中注入一个对象:
@Stateless
@Path("/auth")
public class Login {
@Inject
UsernamePasswordCredentials credentials;
问题是UsernamePasswordCredentials有一个子类,并且这两个类具有相同的限定符,这会导致不明确的依赖关系。如何指定我要注入父类的实例而不是子类?错误消息如下所示:
类型为UsernamePasswordCredentials的不明确依赖项,带有限定符@Default
Managed Bean [class org.picketlink.idm.credential.UsernamePasswordCredentials] with qualifiers [@Any @Default],
Managed Bean [class org.picketlink.idm.credential.TOTPCredentials] with qualifiers [@Any @Default]
答案 0 :(得分:2)
您可以使用编程查找机制来限制所需bean的实际类型:
@Inject
Instance<UsernamePasswordCredentials> credInst;
public UserNamePasswordCredentials getCredentials() {
return credInst.select(UsernamePasswordCredentials.class).get();
}
除此之外,我不是Picket Link专家,但我认为你在做这个框架时出了问题。 Picket Link CDI集成非常精心制作,所以我有点疑惑你可能会在标准用法中遇到这样的问题。