使用JSF 2.x mojarra实现的Java EE 6项目(已测试2.0和2.1),其中Session Bean通过@EJB注解注入到JSF托管的Bean中,在WebSphere应用程序服务器8.5上失败,而在Glassfish 3.x上正常运行(分别在GF 3.0和3.1上进行了测试):
编码方法如下:
SomeEJBFacade.java
@Stateless
public class SomeEJBFacade() {
public String testMethod() {
return "testing 1 2 3";
}
}
测试Bean
@ManagedBean
@ViewScoped
public class TestBean implements java.io.Serializable {
@EJB SomeEJBFacade facade;
public String getTestStr() {
return facade.testMethod();
}
}
JSF面部分片:
<h:outputText value="#{testBean.testStr}" />
上述代码会导致TestBean类中的testStr()方法抛出空指针异常。
类似地,任何JPA事务方法在类似的点上都会抛出空指针异常。