4

JSF 2.x mojarra 実装を使用する Java EE 6 プロジェクト (2.0 と 2.1 の両方でテスト済み) で、セッション Bean が @EJB アノテーションを介して JSF 管理対象 Bean に注入されると、Websphere Application Server 8.5 では失敗しますが、Glassfish 3.x (GF でテスト済み) では機能します。それぞれ 3.0 & 3.1) そのまま:

コーディング アプローチは次のようになります。

一部のEJBFacade.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()メソッドからNull Pointer Exceptionが発生します。

同様に、JPA トランザクション メソッドは、同様のポイントでヌル ポインター例外をスローします。

4

1 に答える 1

0

問題は、GlassFish と WebSphere のクラスローダーが異なる方法で動作することです。Web プロジェクトの META-INF/MANIFEST.MF に ejb モジュールを依存関係として追加する必要があります。

Class-Path: EnappDaemonEJB.jar

「EnappDaemonEJB.jar」は、生成された jar/EJB アーティファクトの名前です。つまり、私の EJB プロジェクトの名前は「EnappDaemonEJB」です。

リンク: WebSphere Infocenter - 手順ポイント 2 を参照

于 2013-02-25T16:59:52.717 に答える