モジュール 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ファクトリのリストを指定する標準JNDIプロパティの1つの場合(Contextを参照)、値はすべて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
関連項目:
Context, NamingManager.setInitialContextFactoryBuilder
  • フィールド詳細

  • コンストラクタの詳細

    • InitialContext

      protected InitialContext​(boolean lazy) throws NamingException
      初期化しないオプションを持つ初期コンテキストを構築します。 これは、InitialContextコンストラクタが呼び出されたときに環境パラメータの値が不明な場合に、サブクラスのコンストラクタで使用されることがあります。 サブクラスのコンストラクタは、このコンストラクタを呼び出し、環境の値を計算してから、値を返す前にinit()を呼び出します。
      パラメータ:
      lazy - trueは、初期コンテキストが初期化されないことを示す。falseは、new InitialContext()を呼び出すのと同じ
      例外:
      NamingException - ネーミング例外が発生した場合
      導入されたバージョン:
      1.3
      関連項目:
      init(Hashtable)
    • InitialContext

      public InitialContext() throws NamingException
      初期コンテキストを構築します。 環境プロパティは指定されません。 new InitialContext(null)と同じです。
      例外:
      NamingException - ネーミング例外が発生した場合
      関連項目:
      InitialContext(Hashtable)
    • InitialContext

      public InitialContext​(Hashtable<?,​?> environment) throws NamingException
      指定した環境を使用して初期コンテキストを構築します。 環境プロパティは、クラスの説明に記述されています。

      このコンストラクタはenvironmentを変更したり、その参照を保存したりはしませんが、複製を保存する可能性があります。 呼出し元は、environmentがコンストラクタに渡されたあと、そこに含まれている可変のキーや値を変更してはいけません。

      パラメータ:
      environment - 初期コンテキストを作成するために使用される環境。 nullは空の環境を示す。
      例外:
      NamingException - ネーミング例外が発生した場合
  • メソッドの詳細

    • init

      protected void init​(Hashtable<?,​?> environment) throws NamingException
      指定した環境を使用して初期コンテキストを初期化します。 環境プロパティは、クラスの説明に記述されています。

      このメソッドではenvironmentが変更され、参照が保存されます。 呼出し側では変更されません。

      パラメータ:
      environment - 初期コンテキストを作成するために使用される環境。 nullは空の環境を示す。
      例外:
      NamingException - ネーミング例外が発生した場合
      導入されたバージョン:
      1.3
      関連項目:
      InitialContext(boolean)
    • doLookup

      public static <T> T doLookup​(Name name) throws NamingException
      名前付きオブジェクトを取得するstaticメソッドです。 これは、次に相当するショートカット・メソッドです。

      InitialContext ic = new InitialContext(); Object obj = ic.lookup();

      nameが空の場合は、このコンテキストの新しいインスタンスを返します(これは、このコンテキストと同じネーミング・コンテキストを表しますが、その環境を個別に変更したり、同時にアクセスしたりできます)。

      型パラメータ:
      T - 返されたオブジェクトの型
      パラメータ:
      name - 検索するオブジェクトの名前
      戻り値:
      nameにバインドされたオブジェクト
      例外:
      NamingException - ネーミング例外が発生した場合
      導入されたバージョン:
      1.6
      関連項目:
      doLookup(String), Context.lookup(Name)
    • doLookup

      public static <T> T doLookup​(String name) throws NamingException
      名前付きオブジェクトを取得するstaticメソッドです。 詳細は、doLookup(Name)を参照してください。
      型パラメータ:
      T - 返されたオブジェクトの型
      パラメータ:
      name - 検索するオブジェクトの名前
      戻り値:
      nameにバインドされたオブジェクト
      例外:
      NamingException - ネーミング例外が発生した場合
      導入されたバージョン:
      1.6
    • getDefaultInitCtx

      protected Context getDefaultInitCtx() throws NamingException
      NamingManager.getInitialContext()を呼び出すことによって初期コンテキストを取得し、それをdefaultInitCtx内にキャッシュします。 以前に実行したことがわかるようにgotDefaultを設定します。
      戻り値:
      null以外のキャッシュ済み初期コンテキスト。
      例外:
      NoInitialContextException - 初期コンテキストが見つからない場合。
      NamingException - ネーミング例外が検出された場合。
    • getURLOrDefaultInitCtx

      protected Context getURLOrDefaultInitCtx​(String name) throws NamingException
      文字列名nameを解決するためのコンテキストを取得します。 name名がURL文字列の場合は、URLコンテキストを検索します。 見つからなかった場合、またはnameがURL文字列ではない場合は、getDefaultInitCtx()を返します。

      サブクラスでこのメソッドがどのように使用されるかは、getURLOrDefaultInitCtx(Name)の説明を参照してください。

      パラメータ:
      name - コンテキストを取得する対象となるnull以外の名前。
      戻り値:
      nameのURLコンテキストまたはキャッシュされた初期コンテキスト。 結果はnullではない。
      例外:
      NoInitialContextException - 初期コンテキストが見つからない場合。
      NamingException - ネーミング例外が検出された場合。
      関連項目:
      NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
    • getURLOrDefaultInitCtx

      protected Context getURLOrDefaultInitCtx​(Name name) throws NamingException
      nameを解決するためのコンテキストを取得します。 name名の最初のコンポーネントがURL文字列の場合は、URLコンテキストを検索します。 見つからなかった場合、またはnameの最初のコンポーネントがURL文字列ではない場合は、getDefaultInitCtx()を返します。

      InitialContextのサブクラスを作成するときは、次のようにしてこのメソッドを使用します。 このメソッドを使用する新しいメソッドを定義し、必要なサブクラスの初期コンテキストを取得します。

       protected XXXContext getURLOrDefaultInitXXXCtx(Name name)
       throws NamingException {
        Context answer = getURLOrDefaultInitCtx(name);
        if (!(answer instanceof XXXContext)) {
          if (answer == null) {
            throw new NoInitialContextException();
          } else {
            throw new NotContextException("Not an XXXContext");
          }
        }
        return (XXXContext)answer;
       }
       
      サブクラスの新しいメソッドに実装を指定する場合は、この新しく定義されたメソッドを使用して、初期コンテキストを取得します。
       public Object XXXMethod1(Name name, ...) {
        throws NamingException {
          return getURLOrDefaultInitXXXCtx(name).XXXMethod1(name, ...);
       }
       

      パラメータ:
      name - コンテキストを取得する対象となるnull以外の名前。
      戻り値:
      nameのURLコンテキストまたはキャッシュされた初期コンテキスト。 結果はnullではない。
      例外:
      NoInitialContextException - 初期コンテキストが見つからない場合。
      NamingException - ネーミング例外が検出された場合。
      関連項目:
      NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
    • composeName

      public String composeName​(String name, String prefix) throws NamingException
      このコンテキストを基準にした名前を持つこのコンテキストの名前を変換します。 初期コンテキストは、それ自体以外のコンテキストを基準にして名前を付けられることはないため、prefixパラメータの値は空の名前(「」)にする必要があります。
      定義:
      composeName、インタフェース: Context
      パラメータ:
      name - このコンテキストを基準にした名前
      prefix - いずれかの上位コンテキストを基準にした、このコンテキストの名前
      戻り値:
      prefixnameの変換
      例外:
      NamingException - ネーミング例外が発生した場合
    • composeName

      public Name composeName​(Name name, Name prefix) throws NamingException
      このコンテキストを基準にした名前を持つこのコンテキストの名前を変換します。 初期コンテキストは、それ自体以外のコンテキストを基準にして名前を付けられることはないため、prefixパラメータの値は空の名前にする必要があります。
      定義:
      composeName、インタフェース: Context
      パラメータ:
      name - このコンテキストを基準にした名前
      prefix - いずれかの上位コンテキストを基準にした、このコンテキストの名前
      戻り値:
      prefixnameの変換
      例外:
      NamingException - ネーミング例外が発生した場合
      関連項目:
      Context.composeName(String, String)