OC4J:同じ耳のWebアプリからローカルEJBを呼び出す
-
29-10-2019 - |
質問
耳アプリには2つのモジュールが含まれています。
EJBモジュールとWebモジュール。
Webモジュールでは、いくつかのEJB SLSBにRefを取得しようとしています。注入は使用しません クラスを原因私はメソッドを呼び出す必要があります.
Webモジュールの次のコードを使用しています。
IFooBarService service = InitialContext.doLookup("IFooBarService");
ifoobarservice:(EJBモジュールで)として定義されたローカルインターフェイス:
@Local
public interface IFooBarService
{
// ...
}
何かが恋しいですか? (環境情報を提供する必要がありますか?)
解決 2
ここから: https://forums.oracle.com/forums/thread.jspa?threadid=476903
解決策は次のとおりです。
fooBarService = (FooBarService) ((StatelessSessionDefaultLocalHome)
new InitialContext().lookup("EJBModuleName_FooBarServiceLocal")).create();
他のヒント
よろしいですか IFooBarService
JNDIの名前はifoobarserviceサービスに拘束されていますか?たとえば、JBossはブートログにJNDI名を示しています。その後、検索目的で使用できます。
一般に、アプリをポータブルにしたい場合は、Java EEスペックには独自のものがあるため、サーバーメカニズムに頼ってJNDI名を生成するべきではありません。あなたはできるはずです:
IFooBarService service = InitialContext.doLookup("java:comp/env/IFooBarService");
Java EE(Java EE 6)の新しいバージョンを使用していて、同じアプリにあるが別のモジュールであるEJBを検索したい場合は、次のことができます。
IFooBarService service = InitialContext.doLookup("java:app/[module name]/IFooBarService");
標準名の詳細 ここ.
所属していません StackOverflow