Java:comp/env
の意味は?
ルックアップは次のようになります:
Context envContext = (Context)initContext.lookup("Java:comp/env");
行う ?
私は次のようなルックアップを理解しています:
(DataSource)envContext.lookup("jdbc/MyDatasource")
context.xml
またはweb.xml
で名前MyDatasource
を検索して、データベースのURLを取得します。 そうですか?!!しかし、前者のルックアップは何をしますか?
Java:comp/env
は、現在のJava EEコンポーネント(webapp、またはEJB))のプロパティを見つけることができるJNDIツリーのノードです。
Context envContext = (Context)initContext.lookup("Java:comp/env");
このノードを直接指す変数を定義できます。できる
SomeBean s = (SomeBean) envContext.lookup("ejb/someBean");
DataSource ds = (DataSource) envContext.lookup("jdbc/dataSource");
のではなく
SomeBean s = (SomeBean) initContext.lookup("Java:comp/env/ejb/someBean");
DataSource ds = (DataSource) initContext.lookup("Java:comp/env/jdbc/dataSource");
絶対パスではなく相対パス。それが使用されているものです。
これは、グローバル変数を名前で保存できるメモリ内グローバルハッシュテーブルです。
「Java:」URLスキームにより、JNDIはjavaURLContextFactory
クラスを検索します。これは通常、アプリコンテナーによって提供されます。 これはTomcatの実装javadocです
NamingManager.getURLContext も参照してください