1. ホーム
  2. java

[解決済み] java:comp/envとは何ですか?

2023-05-29 15:36:57

質問

は何を意味するのか java:comp/env ?

ルックアップはどのようなものでしょうか。

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

を行うか?

のようなルックアップは理解できるのですが、:

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

名前を検索する MyDatasource の中にある context.xml または web.xml でデータベースの URL を取得します。 そうなんですか?!! しかし、前者のルックアップは何をするのでしょうか?

どのように解決するのですか?

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");

絶対パスの代わりに相対パス。そのために使われるのです。