Jakarta ee 使用生产者方法的JavaEE产生';WELD-001408未满足的依赖性..';例外

Jakarta ee 使用生产者方法的JavaEE产生';WELD-001408未满足的依赖性..';例外,jakarta-ee,netbeans,glassfish,cdi,weld2,Jakarta Ee,Netbeans,Glassfish,Cdi,Weld2,好了 我对javaee和CDI非常熟悉。我试图建立一个测试项目,以便使用JAX-RS和CDI完成我的第一步。我通过提供beans.xml启用了CDI。只要我在测试,我就使用bean discovery mode=“all”元素。CDI似乎工作得很好,因为我可以成功地将BeanManager注入到我的测试资源中,并且可以输出它发现的所有bean 我尝试注入一个由生产者方法提供的类。Netbeans向我显示provideMe字段的警告: 未找到符合注入条件的已启用bean 当我将应用程序部署到Gla

好了

我对javaee和CDI非常熟悉。我试图建立一个测试项目,以便使用JAX-RS和CDI完成我的第一步。我通过提供beans.xml启用了CDI。只要我在测试,我就使用bean discovery mode=“all”元素。CDI似乎工作得很好,因为我可以成功地将BeanManager注入到我的测试资源中,并且可以输出它发现的所有bean

我尝试注入一个由生产者方法提供的类。Netbeans向我显示provideMe字段的警告: 未找到符合注入条件的已启用bean

当我将应用程序部署到Glassfish时,会出现以下异常:

WELD-001408 Unsatisfied dependencies for type [ProvideMeInterface] with qualifiers [@Default] at injection point [[BackedAnnotatedField] @Inject private com.test.rest.DataImport.provideMe]
以下是我为这个小测试准备的课程:

接口:

package com.test.orm;
public interface ProvideMeInterface
{
    int getCount();
}
实施:

package com.test.orm;
public class ProvideMeImpl implements ProvideMeInterface {

    int cnt;
    ProvideMeImpl(int cnt)
    {
        this.cnt = cnt;
    }

    @Override
    public int getCount() {
        return cnt;
    }
}
制作人:

package com.test.orm;

import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.Produces;

public class ProvideMeProvider {

  @Produces
  @ApplicationScoped  
  public ProvideMeInterface produceFactory() {
      return new ProvideMeImpl(111);
  }
}
资源:

package com.test.rest;

import ...
...

@Path("rest/import")
public class DataImport {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Inject
    private ProvideMeInterface provideMe;

    @Inject
    BeanManager beanManager;

    public DataImport() {}

    @GET
    @Produces("text/html")
    public String getHtml() {
        return "<html><body><h1>IMPORT Resource: " + provideMe.getCount() + " </body></h1></html>";
    }
}
问题:

1) 为什么在尝试注入唯一的 接口的实现

2) 所有必需的类都在这里发现了吗

3) 如果没有,我需要做什么才能让他们被发现

4) 它发现的“ProvideMe”类是什么?(我有providemimpl、provideminterface和providemprovider,但没有类ProvideMe)

我正在使用:
Glassfish 4.0(build 89)(Java EE 7 Web)/NetBeans 8.0/maven 3.2.1/JDK 1.7

您正在从(JAX-RS运行时使用)导入
@products
,而不是从导入。

谢谢!我只是在这上面花了太多时间
...
INFO:   2014-07-14 14:09:31,040 [DEBUG] com.test.rest.DataImport - Bean: com.test.orm.ProvideMeProvider
INFO:   2014-07-14 14:09:31,041 [DEBUG] com.test.rest.DataImport - Bean: com.test.orm.ProvideMe
...