使用 JSF 2.x mojarra 实现(2.0 和 2.1 测试)的 Java EE 6 项目,其中会话 bean 通过 @EJB 注释注入 JSF 托管 bean 在 Websphere Application Server 8.5 中失败,而它在 Glassfish 3.x 上运行(在 GF 上测试3.0 和 3.1),因为它是:
编码方法如下:
SomeEJBFacade.java
@Stateless
public class SomeEJBFacade() {
public String testMethod() {
return "testing 1 2 3";
}
}
测试豆
@ManagedBean
@ViewScoped
public class TestBean implements java.io.Serializable {
@EJB SomeEJBFacade facade;
public String getTestStr() {
return facade.testMethod();
}
}
JSF facelet 片段:
<h:outputText value="#{testBean.testStr}" />
以上导致TestBean 的testStr()方法出现空指针异常。
同样,任何 JPA 事务方法都会在相似点引发空指针异常。