EJB 不明确的依赖关系:如何指定要注入的 class
EJB Ambiguous dependencies: How to specify which class to Inject
我正在尝试像这样在我的 EJB 中注入一个对象:
@Stateless
@Path("/auth")
public class Login {
@Inject
UsernamePasswordCredentials credentials;
问题是 UsernamePasswordCredentials 有一个子 class 并且两个 class 都有相同的限定符,这导致了不明确的依赖关系。如何指定我要注入父实例 class 而不是子实例 class?错误消息如下所示:
Ambiguous dependencies for type UsernamePasswordCredentials with qualifiers @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]
您可以使用编程查找机制来限制所需 bean 的实际类型:
@Inject
Instance<UsernamePasswordCredentials> credInst;
public UserNamePasswordCredentials getCredentials() {
return credInst.select(UsernamePasswordCredentials.class).get();
}
除此之外,我不是 Picket Link 专家,但我认为您在框架方面做错了什么。 Picket Link CDI 集成制作精良,所以我有点困惑您会在标准用法中遇到这样的问题。
我正在尝试像这样在我的 EJB 中注入一个对象:
@Stateless
@Path("/auth")
public class Login {
@Inject
UsernamePasswordCredentials credentials;
问题是 UsernamePasswordCredentials 有一个子 class 并且两个 class 都有相同的限定符,这导致了不明确的依赖关系。如何指定我要注入父实例 class 而不是子实例 class?错误消息如下所示:
Ambiguous dependencies for type UsernamePasswordCredentials with qualifiers @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]
您可以使用编程查找机制来限制所需 bean 的实际类型:
@Inject
Instance<UsernamePasswordCredentials> credInst;
public UserNamePasswordCredentials getCredentials() {
return credInst.select(UsernamePasswordCredentials.class).get();
}
除此之外,我不是 Picket Link 专家,但我认为您在框架方面做错了什么。 Picket Link CDI 集成制作精良,所以我有点困惑您会在标准用法中遇到这样的问题。