アプリケーションでJNDI APIを使用する場合、まず、javax.naming.InitialContextクラスをnewして初期コンテキストを生成します。初期コンテキストにはContextインタフェースが実装され、名前を解決する開始点が提供されます。
初期コンテキストが生成されると、コンストラクタに渡される環境パラメタによって環境が初期化されますが、この環境パラメタの指定値は使用するJNDIサービスプロバイダによって異なります。このため、プロパティをアプリケーション内で指定するとアプリケーションの移植性が損なわれます。Java EEではこの問題を解決するため、コンテナ起動時に自動的に必要な環境設定を行うことでアプリケーションの汎用性を向上しています。
IJServerクラスタまたはアプリケーションクライアントコンテナの場合
コンテナが自動的に環境設定するため、JNDIの環境プロパティの指定は必要ありません。
IJServerクラスタまたはアプリケーションクライアントコンテナを起動する時にクラスパスに自動設定するappserv-rt.jarファイルに、Interstage Java EEサービスが提供するJNDIサービスプロバイダ用に編集されたjndi.propertiesファイルを内包しています。これによりJava EEコンポーネント内でファクトリを指定しなくてもIJServerクラスタ上のネーミングサービスにアクセスできます。
Java SEスタンドアロンクライアントの場合
Java SEスタンドアロンクライアントで動作させる場合には、appserv-rt.jarファイルを優先的に環境変数クラスパスに設定することでプロパティが自動設定されます。また、明示的にJNDIの環境プロパティを指定する場合には以下を指定してください。
プロパティ名 | 値 | 説明 |
---|---|---|
java.naming.factory.initial (注) | com.sun.enterprise.naming.SerialInitContextFactory | IJServerクラスタのネーミングサービスにアクセスするための標準の初期コンテキストファクトリです。 |
java.naming.factory.url.pkgs | com.sun.enterprise.naming | URL コンテキストファクトリをロードする時に使用するパッケージ接頭辞のリストを指定するための、プロパティです。 |
注) java.naming.factory.initialには以下のファクトリを指定しても動作しますが、動作保証しません。上記のプロパティを使用してください。
値 | 説明 |
---|---|
com.sun.jndi.cosnaming.CNCtxFactory | CosNaming用の初期コンテキストファクトリです。 |
com.sun.appserv.naming.S1ASCtxFactory | ロードバランス用の初期コンテキストファクトリです。 |