モジュール java.naming
パッケージ javax.naming

クラスInitialContext

java.lang.Object
javax.naming.InitialContext
すべての実装されたインタフェース:
Context
直系の既知のサブクラス:
InitialDirContext

public class InitialContext extends Object implements Context
このクラスは、ネーミング操作を実行するための開始コンテキストです。

ネーミング操作はすべて、コンテキストを基準にします。 初期コンテキストにはContextインタフェースが実装され、名前を解決する開始点が提供されます。

初期コンテキストが構築されると、コンストラクタに渡される環境パラメータ、および任意のアプリケーション・リソース・ファイルで定義されたプロパティによって環境が初期化されます。

JNDIでは、次の2つのソースから値を順にマージして、各プロパティの値が決定されます。

  1. コンストラクタの環境パラメータおよびシステム・プロパティから最初に出現するプロパティ。
  2. アプリケーション・リソース・ファイル(jndi.properties)。
この2つのソース、または1つ以上のアプリケーション・リソース・ファイルのプロパティについて、プロパティの値が次のように決定されます。 このプロパティが、JNDIファクトリのリスト(Contextを参照してください)を指定する標準のJNDIプロパティの1つである場合、すべての値が1つのコロンで区切られたリストに連結されます。 ほかのプロパティの場合は、検索された最初の値だけが使用されます。

初期コンテキストの実装は、実行時に決定されます。 デフォルトのポリシーでは、初期コンテキスト・ファクトリのクラス名を含む、環境プロパティjava.naming.factory.initialが使用されます。 このポリシーに対する例外は、次に説明するように、URL文字列を解決するときに作成されます。

URL文字列(scheme_id:rest_of_nameという形式のString)を名前パラメータとして任意のメソッドに渡すと、そのスキームを処理するためのURLコンテキスト・ファクトリが配置され、URLの解決に使用されます。 そのようなファクトリが見つからない場合は、"java.naming.factory.initial"で指定された初期コンテキストが使用されます。 同様に、最初のコンポーネントがURL文字列であるCompositeNameオブジェクトが名前パラメータとして任意のメソッドに渡されると、URLコンテキスト・ファクトリが検索され、名コンポーネントの解決に使用されます。 URLコンテキスト・ファクトリの場所の詳細は、NamingManager.getURLContext()を参照してください。

初期コンテキストおよびURLコンテキスト・ファクトリを検索するこのデフォルト・ポリシーは、NamingManager.setInitialContextFactoryBuilder()をコールすることでオーバーライドできます。

初期コンテキストをインスタンス化できない場合、NoInitialContextExceptionがスローされます。 この例外は、InitialContextの構築時だけに限らず、InitialContextとの対話中にスローされる可能性があります。 たとえば、初期コンテキストの実装では、実際のメソッドが呼び出される場合だけコンテキストを検索する場合もあります。 アプリケーションは、初期コンテキストの有無が判別される時期に依存しません。

環境プロパティjava.naming.factory.initialがnull以外の場合、InitialContextコンストラクタではそこに指定した初期コンテキストが作成されます。 その時点で問題が発生した場合、関連する初期コンテキスト・ファクトリで例外がスローされます。 ただし、いつ検証されるか、および初期のコンテキスト、環境プロパティ(つまり接続)に関する問題がいつユーザーに表示されるかは、プロバイダの実装に依存します。 コンテキストでオペレーションが実行されるときまで待機する場合も、コンテキスト構築時にすぐに実行する場合もあります。

InitialContextインスタンスは、並行アクセスに対して複数のスレッドでは同期化されません。 異なるInitialContextインスタンスを操作する複数スレッドでは、同期化は必要ありません。 単一のInitialContextに並行してアクセスする必要のあるスレッドは、それ自体で同期化され、必要なロックを提供する必要があります。

導入されたバージョン:
1.3, JNDI 1.1
関連項目: