首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDI 2.0 (焊接):无法注入非CDI组件

CDI 2.0 (焊接):无法注入非CDI组件
EN

Stack Overflow用户
提问于 2021-01-30 00:14:30
回答 1查看 85关注 0票数 0

在Wildfly 20上部署的rest端点中,我需要注入javax.ws.rs.core.UriBuilder类的外部非CDI实例。例如:

代码语言:javascript
复制
@Path("...")
public class MyResource
{
  ...
  @Inject
  private UriBuilder uriBuilder;
  ...
}

下面是制作人:

代码语言:javascript
复制
public class UriBuilderProducer
{
  @Produces
  public UriBuilder getUriBuilder()
  {
    return UriBuilder.fromResource(Customer.class);
  }
}

beans.xml文件如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                       http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
   version="2.0" bean-discovery-mode="all">
</beans>

但是,部署失败会引发以下异常:

代码语言:javascript
复制
15:03:24,837 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."myresource.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."myresource.war".WeldStartService: Failed to start service
    at org.jboss.msc@1.4.11.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1731)
    at org.jboss.msc@1.4.11.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
    at org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
    at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.base/java.lang.Thread.run(Thread.java:834)
 Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type UriBuilder with qualifiers @Default
   at injection point [UnbackedAnnotatedField] @Inject private ...MyResource.uriBuilder
   at ...MyResource.uriBuilder(MyResource.java:0)

我错过了什么?

非常感谢您的帮助。

致以亲切的问候,

西摩

EN

回答 1

Stack Overflow用户

发布于 2021-01-30 01:04:33

我的错,我把beans.xml放错地方了。为了进入结果WAR的WEB-INF目录,需要将其放入src/main/webapp/WEB-INF而不是src/main/resources/WEB-INF,这是基于maven COC (约定重于配置)规则。

当然,将这个文件放在正确的位置可以解决问题。很抱歉给您带来不便。

致以亲切的问候,

西摩

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65958031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档