【问题标题】:CDI @inject null pointerCDI @inject 空指针
【发布时间】:2012-01-13 15:42:18
【问题描述】:

我正在尝试使用 CDI,但注入不起作用,对象实例未创建,并且我得到一个空指针: greetObj.greet("冠军");

我正在尝试在 EJB 中注入一个 bean: 我的 EJB:

    public @Stateless class CDIEjbBean implements CDIEjb {

    @Inject Greeting greetObj;
    public String getGreeting() {
        return greetObj.greet("Champion");
    }
}

以及问候对象和限定符

@Default
public class Greeting {

    public String greet(String name) {
        return "Hello, " + name + ".";
    }
}

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Informal {}

@Informal
public class InformalGreeting extends Greeting{
    public String greet(String name) {
        return "Hi, " + name + ".";
    }
}

有什么想法吗?我在 JDK6_21 glassfish 3.1

谢谢

亚历克西斯

【问题讨论】:

  • 你的模块中有空的 beans.xml 吗?
  • 好吧,我错过了 JEE6 教程的第一行: > 配置 CDI 应用程序 使用 CDI 的应用程序必须有一个名为 beans.xml 的文件。该文件可以是完全空的(它只有在某些有限的情况下才具有内容>),但它必须存在。对于 web > 应用程序,beans.xml 文件必须位于 WEB-INF 目录中。对于 > EJB 模块或 JAR 文件,beans.xml 文件必须位于 META-INF > 目录中。即使使用限定符。还是谢谢你
  • 没问题,很高兴问题得到解决。

标签: java glassfish java-ee-6 cdi


【解决方案1】:

我错过了 JEE6 教程的第一行: > 配置 CDI 应用程序 使用 CDI 的应用程序必须有一个名为 beans.xml 的文件。

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 2016-10-29
    • 2014-05-11
    • 2017-11-08
    • 2018-09-28
    • 2012-11-27
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多