87

どういう意味java:comp/envですか?

ルックアップはどのようになりますか:

Context envContext = (Context)initContext.lookup("java:comp/env");

行う ?

私は次のようなルックアップを理解しています:

(DataSource)envContext.lookup("jdbc/MyDatasource")

またはで名前MyDatasourceを検索して、データベースのURLを取得します。そうですか?!! しかし、前者のルックアップは何をしますか?context.xmlweb.xml

4

3 に答える 3

74

java:comp/envは、現在のJava EEコンポーネント(Webアプリケーションまたは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");

絶対パスではなく相対パス。それが使用されているものです。

于 2012-07-24T13:41:57.780 に答える
9

これは、グローバル変数を名前で格納できるメモリ内のグローバルハッシュテーブルです。

「java:」URLスキームにより、JNDIはjavaURLContextFactoryクラスを検索します。これは通常、アプリコンテナによって提供されます。たとえば、Tomcatの実装javadocは次のとおりです。

NamingManager.getURLContextも参照してください

于 2015-11-18T03:38:01.963 に答える
4

遅刻していることは承知していますが、同じ質問をしていたので、答えが出たと思います。だから、もし私が2セント入れれば。

java:comp/env/jdbc/myDataSource

  • java:jdbc:接続文字列からのようです。プロトコルとして機能します。
  • compすべてのJNDIコンテキストのルートです。
  • env関連するすべてのリソースのサブコンテキストです。ユーザー向けにもう1つあります。これをチェックしてください。
  • jdbcjdbcリソースのサブコンテキストです。タイプがあります。前の箇条書きからのリンクを確認してください。
  • myDataSourcejdbcリソースの名前です。
于 2021-02-23T00:55:23.270 に答える