我在WAR模块中有一个JSF bean,它有一个可以工作的@EJB。当我将JSF bean移动到Java库(JAR)时,@ EJB不起作用(当我尝试访问EJB时,我得到NullPointerException)。我需要从方案I转到方案II:
情景I:
企业应用程序
WAR模块:
JSF页面:
<p>#{testController.test}</p>
JSF Bean:
@Named
public class TestController {
@EJB
private TestEjb testEjb;
public String getTest() {
return testEjb.test();
}
}
EJB模块:
@Stateless
public class TestEjbImpl implements TestEjb {
@Override
public String test() {
return (new Date()).toString();
}
}
情景II:
企业应用程序
WAR模块:
JSF页面:
<p>#{testController.test}</p>
JSF Bean:
[Empty - 将JSF bean移到Java库(JAR)]
EJB模块:
@Stateless
public class TestEjbImpl implements TestEjb {
@Override
public String test() {
return (new Date()).toString();
}
}
Java Library(JAR):
@Named
public class TestController {
@EJB
private TestEjb testEjb;
public String getTest() {
return testEjb.test(); // Here I get a NullPointerException
}
}
我创建了一个带有Java库的企业应用程序项目,可以重现此问题。这是一个Netbeans项目:https://dl.dropboxusercontent.com/u/64616807/stackoverflow/jee6.rar