【发布时间】:2013-11-22 07:37:43
【问题描述】:
我是 cdi 的新手,这是我的第一步。 我在 ejb 模块中有一个 bean:
@Stateless
public class TestBean {
public String getIt(){
return "test";
}
}
我在战争模块中有一个 POJO(我尝试使用 @EJB 和 @Inject - 结果相同)
public class SaveAction extends Action{
@EJB
private TestBean bean;
@Override
public void execute(){
....
String test = bean.getIt(); //HERE I GET java.lang.NullPointerException
...
}
}
war 和 ejb 都在耳边。在日志中我看到了
EJB5181:EJB TestBean 的可移植 JNDI 名称: [java:global/example.com/my-ejb/TestBean!com.example.TestBean, java:global/example.com/my-ejb/TestBean]]]
由此我得出结论,bean 已初始化 - 但我找不到它。我做错了什么?
【问题讨论】:
-
SaveAction 在哪里实例化/谁实例化它?
-
@isnot2bad 在 servlet 中实例化。
-
所以你是通过'new'来做的?
-
@PashaTurok,可能您尝试在 Struts 上注入 EJB bean,请在 HTTPServlet 上尝试。
-
@PashaTurok 当你用'new'自己创建bean时,不会发生神奇的注入!让 CDI 容器创建你的 bean,然后它就可以工作了!
标签: java jakarta-ee glassfish ejb