Java 在注入点[[field]@Inject]处具有限定符[@Default]的类型[***<;T>;]的未满足依赖关系
在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时,我似乎没有遇到这些问题) org.jboss.weld.exceptions.DeploymentException:weld-001408类型[CarPolicyServiceWithContext]的未满足依赖项,在注入点[[field]@injectcom.athlon.thrift.web.utils.MSFOTContextUtils.carPolicyService]具有限定符[@Default] 注射 供应商Java 在注入点[[field]@Inject]处具有限定符[@Default]的类型[***<;T>;]的未满足依赖关系,java,jboss,cdi,jboss-arquillian,Java,Jboss,Cdi,Jboss Arquillian,在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时,我似乎没有遇到这些问题) org.jboss.weld.exceptions.DeploymentException:weld-001408类型[CarPolicyServiceWithContext]的未满足依赖项,在注入点[[field]@injectcom.athlon.thrift.web.utils.MSFOTContextUtils.carPolicyService]具有限定符[@Defa
@ApplicationScoped
公共类服务提供者{
@注入
@任何
私家车服务;
私有静态最终字符串COUNTRY=“NL”;
私有静态最终记录器Logger=LoggerFactory.getLogger(ServiceProvider.class);
@产生
公共CarPolicyServiceWithContext getCarPolicyService(){
找到的实例=carPolicyServices.select(
新的国家限定符(国家));
info(“CarPolicyServiceWithContext-loaded”+found.toString());
返回find.get();
}
公共静态类限定符
扩展AnnotationLiteral
实施国{
私有字符串值;
公共CountryQualifier(字符串值){
这个值=值;
}
公共字符串值(){
返回值;
}
}
}
豆子
@Country(“NL”)
@适用范围
公共类CarpolicyNetherlands服务使用上下文实现CarPolicyServiceWithContext{
我在提供者中添加了一些日志,但我没有看到它打印在arquillian jboss日志中
谢谢!在@Deployment归档文件中,出于某种原因,上面的ServiceProvider类没有添加到归档文件中。在@Deployment归档文件中,出于某种原因,上面的ServiceProvider类没有添加到归档文件中。您是否尝试创建war文件并进行了部署?在我看来,这更像是一个“问题”关于CDI配置,而不是arquillian问题。CDI是非常类型安全的,您的接口中有一个泛型。我不确定它与您的用例有什么关联,但这意味着您必须将其引用为
CarPolicyServiceWithContext
您确定该提供程序在您的arquillian部署中吗?它在您的re中吗还是你添加这个版本来支持测试?你是否尝试创建一个WAR文件并进行部署?在我看来,这更像是一个“问题”关于CDI配置,而不是arquillian问题。CDI是非常类型安全的,您的接口中有一个泛型。我不确定它与您的用例有什么关联,但这意味着您必须将其引用为CarPolicyServiceWithContext
您确定该提供程序在您的arquillian部署中吗?它在您的re中吗还是你添加这个版本来支持测试?
@ApplicationScoped
public class MSFOTContextUtils {
@Inject
Logger logger;
@Inject
CarPolicyServiceWithContext carPolicyService;
@ApplicationScoped
public class ServiceProvider {
@Inject
@Any
private Instance<CarPolicyServiceWithContext> carPolicyServices;
private static final String COUNTRY = "NL";
private static final Logger LOGGER = LoggerFactory.getLogger(ServiceProvider.class);
@Produces
public CarPolicyServiceWithContext getCarPolicyService() {
Instance<CarPolicyServiceWithContext> found = carPolicyServices.select(
new CountryQualifier(COUNTRY));
LOGGER.info("CarPolicyServiceWithContext loaded"+found.toString());
return found.get();
}
public static class CountryQualifier
extends AnnotationLiteral<Country>
implements Country {
private String value;
public CountryQualifier(String value) {
this.value = value;
}
public String value() {
return value;
}
}
}
@Country("NL")
@ApplicationScoped
public class CarPolicyNetherlandsService implements CarPolicyServiceWithContext<MSFOTContext> {