1

@EJB が機能する WAR モジュールに JSF Bean があります。JSF Bean を Java ライブラリ (JAR) に移動すると、@EJB が機能しません (EJB にアクセスしようとすると NullPointerException が発生します)。シナリオ I からシナリオ II に移行する必要があります。

シナリオ I:

エンタープライズ アプリケーション

戦争モジュール:

JSF ページ:

<p>#{testController.test}</p>

JSF Bean:

@Named
public class TestController {

    @EJB
    private TestEjb testEjb;

    public String getTest() {
        return testEjb.test();
    }

}

EJB モジュール:

@Stateless
public class TestEjbImpl implements TestEjb {

    @Override
    public String test() {
        return (new Date()).toString();
    }

}

シナリオ II:

エンタープライズ アプリケーション

戦争モジュール:

JSF ページ:

<p>#{testController.test}</p>

JSF Bean:

[空 - JSF Bean は Java ライブラリ (JAR) に移動されました]

EJB モジュール:

@Stateless
public class TestEjbImpl implements TestEjb {

    @Override
    public String test() {
        return (new Date()).toString();
    }

}

Java ライブラリ (JAR):

@Named
public class TestController {

    @EJB
    private TestEjb testEjb;

    public String getTest() {
        return testEjb.test(); // Here I get a NullPointerException
    }

}

この問題を再現する Java ライブラリを使用してエンタープライズ アプリケーション プロジェクトを作成しました。これは Netbeans プロジェクトです: https://dl.dropboxusercontent.com/u/64616807/stackoverflow/jee6.rar

4

0 に答える 0