当前位置: 首页 > 知识库问答 >
问题:

Glassfish 4,CDI中的简单示例失败,WELD-001408不满足依赖项

岳毅
2023-03-14

我是CDI的新手。这是我的第一个例子,我正在尝试运行它。在互联网上搜索后,我编写了以下代码:我想要注入的类

public class Temp {

public Temp(){

}

public String getMe(){
    return "something";
}
}

servlet

@WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"})
public class NewServlet extends HttpServlet {

@Inject
public Temp temp;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
        out.println("<body>");
        out.println("<h1> Here it is"+temp.getMe()+ "</h1>");
        out.println("</body>");
    }
}
...

我做错了什么?

共有1个答案

微生德泽
2023-03-14

WEB-INF中不存在beans.xml或文件需要将bean-discovery-mode=“annotated”更改为bean-discovery-mode=“all”

<?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_1_1.xsd"
  bean-discovery-mode="all">
</beans>

推荐值“annotated”仅识别带注释的CDI托管bean。没有任何注释的bean将被忽略。由于您的Temp类不是CDIbean,因此建议不适用于您的情况。

若要使用annotated,请使用@RequestScoped对类进行注释:

// Import only this RequestScoped
import javax.enterprise.context.RequestScoped;

@RequestScoped
public class Temp {

    public Temp() { }

    public String getMe() {
        return "something";
    }
}

这个RequestScoped将把Temp类转换为CDIbean,并与bean-discovery-mode=“annotated”一起工作。

 类似资料:
  • 我确实遇到了与这里所解释的相同的问题:JBOSS7.1.3:@EJB工作而@Inject失败,这可能是相同的设置(Wildfly 8.0)。 尽管有一个带有producer的资源类,但我不能注入一个Logger实例。Neiter在控制器中,也不在EJB中。“问题1”如果我错了,请纠正我,我应该可以将它们注入@model bean和注有@stateless(EJB)的bean中,不是吗? 下面是我的

  • 我正在尝试将两个独立的战争迁移到一个耳朵里。 运行在WebLogic 12.2.1上,所以Java EE 7(CDI 1.1和EJB 3.1)。 每个WAR都包含相同的JAR库,其中包含许多@Stateless EJB和@Named CDI托管bean: 我已经执行了几个必需的步骤: 将包含ejb和CDI托管bean的ejb-cdi.jar的打包类型更改为ejb 将ejb-cdi.jar配置为po

  • 我有一个非常简单的测试: 我只想注入类型为的对象<代码>单一实体是一个单一的POJO: 之后,我执行。为了让Arquillian在Wildfly嵌入式实例中执行这些测试,我已经配置了测试: 这很简单,但是,我收到一个异常,告诉我无法解决: 原因:org。jboss。焊接例外。DeploymentException:WELD-001408:SingleEntity类型与限定符@Default的不满意

  • 我有bean,它实现了两个接口(远程和本地)。我还添加了注释,用于使用无接口视图访问bean。 我使用的原因取自JBoss AS7快速入门示例: > WeatherDataBean具有: 资源具有:

  • 我在JBoss上部署我的Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题: ... 在JBoss 7.1上部署时会出现以下错误: 10:05:34838错误[org.jboss.msc.service.fail](msc服务线程1-6)MSC00001:无法启动服务jboss。部署。单元“mdk-exchange-1.1.0.战争”。WeldSer

  • 嗨,我定义了以下限定符类型。。 还有两个实现。 我从客户那里注射。。 在运行时,每件事情都可以正常工作。。 但是当我运行单元测试时,问题就来了。。 我得到以下例外情况。。 组织。jboss。焊接例外情况。DeploymentException:WELD-001408:SortAndFilterProvider类型的未满足依赖项,在注入点[BackedAnnotatedField]@Inject@S