【发布时间】: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