0

EAR アプリに 2 つのモジュールが含まれています。

EJB モジュールと Web モジュール。

Web モジュールで、一部の EJB SLSB への参照を取得しようとしています。メソッドを呼び出す必要があるクラスが管理されていないため、インジェクションは使用しません。

Web モジュールから次のコードを使用しています。

IFooBarService service = InitialContext.doLookup("IFooBarService");

IFooBarService: ( ejb モジュールで) として定義されたローカル インターフェイス:

@Local
public interface IFooBarService
{
    // ...
}

私は何かが恋しいですか?(環境情報を提供する必要がありますか?)

4

2 に答える 2

1

IFooBarServiceIFooBarService サービスがバインドされている JNDI 名でよろしいですか? たとえば、JBoss はブート ログに JNDI 名を表示します。その後、ルックアップ目的で使用できます。

一般に、アプリを移植可能にしたい場合は、Java EE 仕様に独自の JNDI 名があるため、サーバー メカニズムに依存して JNDI 名を生成するべきではありません。あなたはできるはずです:

IFooBarService service = InitialContext.doLookup("java:comp/env/IFooBarService");

新しいバージョンの Java EE (Java EE 6) を使用していて、同じアプリ内にあるが別のモジュール内にある EJB をルックアップしたい場合は、次のことができます。

IFooBarService service = InitialContext.doLookup("java:app/[module name]/IFooBarService");

標準名の詳細については、こちらをご覧ください。

于 2012-01-17T16:48:29.467 に答える
0

ここから: https://forums.oracle.com/forums/thread.jspa?threadID=476903

解決策は次のとおりです。

fooBarService = (FooBarService) ((StatelessSessionDefaultLocalHome)
    new InitialContext().lookup("EJBModuleName_FooBarServiceLocal")).create();
于 2012-01-18T09:39:39.387 に答える