内部に ejb モジュールと SomeService を持つ EAR アプリがあります。
some-ear.ear -> some-ejb.jar -> SomeBean implements ISomeBean
Java EE 仕様では、この Bean の JNDI 名は
java:comp/env/ISomeService
アプリケーションをWebLogic 10.3 にデプロイすると、問題new InitialContext().lookup("java:comp/env/ISomeService");
なく動作する
このアプリをJBoss 4.2.3にデプロイすると、ログに次のように表示されます。
DEBUG [org.jboss.ejb3.stateless.BaseStatelessProxyFactory] Binding proxy for SomeBean in JNDI at some-ear/SomeBean/local
ああ、神様!私のBeanのJNDI名は-機能some-ear/SomeBean/local
して
new InitialContext().lookup("java:comp/env/ISomeService");
いません
new InitialContext().lookup("some-ear/SomeBean/local");
-うまく機能します
GlassFish 3.1にアプリをデプロイすると、ログに次のように表示されます。
Portable JNDI names for EJB SomeBean : [java:global/some-ear/some-jar/SomeBean ...
再び新しい JNDI 名です!
new InitialContext().lookup("java:global/some-ear/some-jar/SomeBean");
- うまくいきます
異なる AS で同じ Bean の異なる JNDI 名が存在する理由と、この JNDI 名が Java EE 仕様と異なる理由を説明できますか?