3

内部に 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 仕様と異なる理由を説明できますか?

4

1 に答える 1

7

JavaEE 命名の混乱は、JavaEE6 仕様が対処するまで、長い間問題でした。これで、Java EE AppServer のさまざまなコンポーネントの標準名前空間ができました。公平を期すために、JBossAS7、Websphere 8、Glassfish 3.1 などの Java EE 6 AppServer を比較する必要があります。

于 2012-07-13T13:05:29.790 に答える