UsernamePasswordCredentials

UsernamePasswordCredentials

我试图像这样在我的EJB中注入一个对象:

@Stateless
@Path("/auth")
public class Login {

@Inject
UsernamePasswordCredentials credentials;


问题是UsernamePasswordCredentials有一个子类,并且两个类具有相同的限定符,从而导致模棱两可的依赖关系。如何指定要注入父类而不是子类的实例?错误消息如下所示:


  带有限定符@Default的UsernamePasswordCredentials类型的不明确依赖项
  
  具有限定符[@Any @Default]的托管Bean [类org.picketlink.idm.credential.UsernamePasswordCredentials],
  
  具有限定符[@Any @Default]的托管Bean [类org.picketlink.idm.credential.TOTPCredentials]

最佳答案

您可以使用编程查找机制来限制所需bean的实际类型:

@Inject
Instance<UsernamePasswordCredentials> credInst;

public UserNamePasswordCredentials getCredentials() {
  return credInst.select(UsernamePasswordCredentials.class).get();
}


除此之外,我不是Picket Link专家,但是我认为您在框架方面做错了。 Picket Link CDI集成非常精细,因此您在标准用法中会遇到这样的问题令我有些疑惑。

10-04 20:17