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