简体   繁体   English

EJB模棱两可的依赖关系:如何指定要注入的类

[英]EJB Ambiguous dependencies: How to specify which class to Inject

I am trying to inject an object in my EJB like this: 我试图像这样在EJB中注入一个对象:

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

@Inject
UsernamePasswordCredentials credentials;

The problem is the UsernamePasswordCredentials has a child class and both classes have the same qualifiers which causes an ambiguous dependencies. 问题在于UsernamePasswordCredentials有一个子类,并且两个类具有相同的限定符,这会导致模棱两可的依赖关系。 How do I specify that I want to inject an instance of the parent class and not the child class? 如何指定要注入父类而不是子类的实例? Error message looks like this: 错误消息如下所示:

Ambiguous dependencies for type UsernamePasswordCredentials with qualifiers @Default 带限定符@Default的UsernamePasswordCredentials类型的不明确依赖项

Managed Bean [class org.picketlink.idm.credential.UsernamePasswordCredentials] with qualifiers [@Any @Default], 具有限定符[@Any @Default]的托管Bean [类org.picketlink.idm.credential.UsernamePasswordCredentials],

Managed Bean [class org.picketlink.idm.credential.TOTPCredentials] with qualifiers [@Any @Default] 带有限定符[@Any @Default]的托管Bean [类org.picketlink.idm.credential.TOTPCredentials]

You could use the programmatic lookup mechanism to restrict the actual type of the needed bean: 您可以使用编程查找机制来限制所需bean的实际类型:

@Inject
Instance<UsernamePasswordCredentials> credInst;

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

Beyond that, I'm not a Picket Link expert, but I think you are doing something wrong with the framework. 除此之外,我不是Picket Link专家,但是我认为您在框架方面做错了。 Picket Link CDI integration was very well crafted so I'm a bit puzzled you could encounter such an issue in a standard usage. Picket Link CDI集成非常精细,因此我有点困惑您在标准用法中会遇到这样的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM