如何解决CDI 生产者给出 CDI 部署失败:WELD-001408
我正在与名人作斗争
url = "https:testurl.com/"
na = [':','/','.']
for i in na:
l = l.strip(i)
print(l)
我有一个非常简单的耳朵,分为 3 个模块:
- business.jar,打包成ejb
- web,打包为 war
- httpclient,打包成jar
在 httpclient 模块中,我有一个简单的类,我想在其中注入配置对象(即 url、身份验证参数等) 这是客户:
Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type JerseyClientConfig with qualifiers @Default
WELD-001475: The following beans match by type,but none have matching qualifiers:
HttpClientConfigFactory.getClientConfig()],- Producer Method [JerseyClientConfig] with qualifiers [@Any @DefaultClientConfig] declared as [[BackedAnnotatedMethod] @Produces @DefaultClientConfig @ApplicationScoped public HttpClientConfigFactory.getClientConfig()]
@DefaultClientConfig:
@ApplicationScoped
public class HttpClient {
private Client client;
private String resourceUri;
public SbankenClient() {
}
@Inject
public HttpClient(@DefaultClientConfig JerseyClientConfig jerseyClientConfig) {
//public SbankenClient(JerseyClientConfig jerseyClientConfig) {
this.resourceUri = Objects.requireNonNull(jerseyClientConfig.getResourceUri());
client = ClientBuilder.newBuilder()
.withConfig(jerseyClientConfig.getClientConfig()).build();
}
在业务层我为此注册了一个生产者:
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.METHOD,ElementType.TYPE,ElementType.PARAMETER})
public @interface DefaultClientConfig {
}
我所有的 beans.xml 都已就位 (resources/META-INF),如果我将 HttpClientConfigFactory 移动到 httpclient 模块中,它将起作用。问题是我只在业务层知道我想创建什么类型的配置对象,所以我需要这个生产者在业务层。
我正在使用 javaee-api 和 payara 5.2020。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。