1

Java EE アプリケーションで、レイアウト マネージャー クラスをコーディングしました。このクラスから、EJB モジュールから EJB セッションにアクセスする必要がある場合があります。

これがコードで、これが生成されたコードです。

private MessagesFacadeLocal lookupMessagesFacadeLocal() {
    try {
        Context c = new InitialContext();
        return (MessagesFacadeLocal) c.lookup("java:global/CMS/CMS-ejb/MessagesFacade!cms.model.beans.MessagesFacadeLocal");
    } catch (NamingException ne) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
        throw new RuntimeException(ne);
    }
}

しかし、これを使用しようとすると、エラーが発生します

java.lang.RuntimeException: javax.naming.NamingException:

「java:global/CMS/CMS-ejb/MessagesFacade!cms.model.beans.MessagesFacadeLocal」の検索に失敗しました

SerialContext[myEnv= {java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [ルート例外は javax.naming.NameNotFoundException: CMS]

なぜこの問題が発生するのかわかりません。この問題を解決するには?

4

1 に答える 1

0

エラーメッセージには、「CMS」コンテキストが見つからないことが示されているため、アプリケーション名は実際には「CMS」ではないと思います。lookup("java:app/AppName") は何を返しますか?

EJB モジュールが同じアプリケーション内にある場合は、lookup("java:app/CMS-ejb-/...") を使用できます。これにより、アプリケーション名を柔軟に変更できます。

于 2012-07-23T13:58:13.617 に答える