使用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";
}
}
testBean这个
@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事务方法都会抛出空指针异常 类似的观点。
答案 0 :(得分:0)
问题是GlassFishs和WebSpheres类加载器确实以不同的方式工作。您必须在Web项目META-INF / MANIFEST.MF中添加ejb模块作为依赖项:
Class-Path: EnappDaemonEJB.jar
其中'EnappDaemonEJB.jar'是生成的jar / EJB artefact的名称 - 换句话说,我的EJB项目的名称是'EnappDaemonEJB'。