4

使用 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 事务方法都会在相似点引发空指针异常。

4

1 回答 1

0

问题是 GlassFishs 和 WebSpheres 类加载器确实以不同的方式工作。您必须将 ejb 模块添加为 Web 项目 META-INF/MANIFEST.MF 中的依赖项:

Class-Path: EnappDaemonEJB.jar

其中“EnappDaemonEJB.jar”是生成的 jar/EJB 工件的名称——或者换句话说,我的 EJB 项目的名称是“EnappDaemonEJB”。

链接:WebSphere Infocenter - 请参阅过程点 2

于 2013-02-25T16:59:52.717 回答