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

クラスNamingManager

java.lang.Object
javax.naming.spi.NamingManager
直系の既知のサブクラス:
DirectoryManager

public class NamingManager extends Object
コンテキスト・オブジェクト、およびネーミング・サービスまたはディレクトリ・サービスの位置情報の参照先オブジェクトを生成するメソッドを格納するクラスです。

このクラスはインスタンス化できません。 このクラスはstaticメソッドだけを持っています。

このクラスのドキュメントのURLの記載は、RFC 1738およびその関連RFCで定義されているURL文字列を指しています。 それは、そこで記述されている構文規則に準拠する任意の文字列であり、対応するサポートがjava.net.URLクラスまたはWebブラウザに必ずあるとは限りません。

NamingManagerは、複数のスレッドによる並行アクセスに対して安全です。

別途注釈のある場合を除いて、Nameまたはメソッドに渡される環境パラメータは、呼出し側が所有します。 実装はオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、その複製またはコピーに対する参照を保持することがあります。

導入されたバージョン:
1.3
  • フィールド詳細

    • CPE

      public static final String CPE
      getContinuationContext()がそのCannotProceedExceptionパラメータの値を格納する環境プロパティの名前を保持する定数。 このプロパティは継続コンテキストが継承し、そのコンテキストのサービス・プロバイダが例外のフィールドを調べるのに使います。

      この定数の値はjava.naming.spi.CannotProceedExceptionです。

      導入されたバージョン:
      1.3
      関連項目:
  • メソッドの詳細

    • setObjectFactoryBuilder

      public static void setObjectFactoryBuilder(ObjectFactoryBuilder builder) throws NamingException
      ObjectFactoryBuilderは、オブジェクト・ファクトリをロードする際に使用するポリシーを決定します。 デフォルトのポリシーの説明については、getObjectInstance()およびclass ObjectFactoryを参照してください。ObjectFactoryBuilderをインストールすることによって、setObjectFactoryBuilder()がこのデフォルトのポリシーをオーバーライドします。 後続のオブジェクト・ファクトリは、インストールされたビルダーを使用してロードおよび生成されます。

      ビルダーをインストールできるのは、セキュリティ・マネージャのcheckSetFactory()メソッドが実行中のスレッドにインストールを許可した場合に限ります。 一度インストールすると、ビルダーを置き換えることはできません。

      パラメータ:
      builder - インストールするファクトリ・ビルダー。 nullの場合、インストールされるビルダーがない。
      例外:
      SecurityException - セキュリティ上の理由から、ビルダーをインストールできない場合。
      NamingException - セキュリティに関連しない理由で、ビルダーをインストールできない場合。
      IllegalStateException - ファクトリがすでにインストールされている場合。
      関連項目:
    • getObjectInstance

      public static Object getObjectInstance(Object refInfo, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception
      指定されたオブジェクトおよび環境にオブジェクトのインスタンスを生成します。

      オブジェクト・ファクトリ・ビルダーがインストールされている場合、そのビルダーを使って、オブジェクトを生成するファクトリを生成します。 そうでない場合は、次の規則を使用してオブジェクトを生成します。

      1. refInfoがファクトリ・クラス名を格納するReferenceまたはReferenceableである場合、指定されたファクトリを使用してオブジェクトを生成します。 ファクトリを生成できない場合はrefInfoを返します。 JDK 1.1では、参照で指定された位置からファクトリ・クラスをロードする必要がある場合、SecurityManagerがインストールされている必要があります。インストールされていない場合、ファクトリ生成は失敗します。 ファクトリの生成中に例外が検出された場合、その例外は呼出し側に引き渡されます。
      2. refInfoがファクトリ・クラス名を持たないReferenceまたはReferenceableで、かつアドレスがアドレス型「URL」のStringRefAddrである場合、各URLのスキームIDに対応するURLコンテキスト・ファクトリでオブジェクトの生成を試みます(getURLContext()を参照)。 これが失敗した場合は、次のステップに進みます。
      3. 環境のContext.OBJECT_FACTORIESプロパティおよびnameCtxに関連したプロバイダ・リソース・ファイルのContext.OBJECT_FACTORIESプロパティで指定されたオブジェクト・ファクトリを、この順番で使用します。 このプロパティの値は、順に試されるファクトリ・クラス名の、コロンで区切られたリストであり、オブジェクト生成に最初に成功した値が使用されます。 どのファクトリもロードできない場合は、refInfoを返します。 オブジェクトの生成中に例外が検出された場合、その例外は呼出し側に引き渡されます。

      DirContextインタフェースを実装しているサービス・プロバイダは、このメソッドではなくDirectoryManager.getObjectInstance()を使うようにします。 Contextインタフェースのみを実装するサービス・プロバイダは、このメソッドを使用するようにしてください。

      オブジェクト・ファクトリ(ObjectFactoryインタフェースを実装しているオブジェクト)はpublicであることが必要で、また引数を取らないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュールにある場合は、そのモジュールがjava.namingモジュールにエクスポートするパッケージ内にある必要があります。

      作成されるオブジェクトの名前を指定するために、オプションでnameパラメータやnameCtxパラメータを使用できます。nameは、コンテキストnameCtxを基準にした、オブジェクトの名前です。 この情報は、オブジェクト・ファクトリまたはオブジェクト実装に有用な場合があります。 オブジェクトを命名できるコンテキストが複数あることもありますが、その場合は呼出し側が選択します。 適切な経験則として、使用可能な「もっとも深い」コンテキストを選択することをお薦めします。 nameCtxがnullの場合、nameはデフォルトの初期コンテキストを基準にしています。 名前を指定しない場合は、nameパラメータをnullにします。

      パラメータ:
      refInfo - オブジェクトを作成する対象となるnullの可能性があるオブジェクト。
      name - nameCtxを基準にしたこのオブジェクトの名前。 名前の指定はオプション。省略される場合は、nameをnullにする。
      nameCtx - nameパラメータが基準にして指定されているコンテキスト。 nullの場合、nameはデフォルトの初期コンテキストを基準にする。
      environment - オブジェクト・ファクトリとオブジェクトの作成で使用されるnullの可能性がある環境。
      戻り値:
      refInfoを使って生成されたオブジェクト、または上記のアルゴリズムを使ってオブジェクトを生成できなかった場合はrefInfo
      例外:
      NamingException - URLコンテキストを取得するときにネーミング例外が見つかった場合、またはアクセスしたファクトリの1つがNamingExceptionをスローした場合。
      Exception - アクセスされたいずれかのファクトリが例外をスローした場合、またはファクトリやオブジェクト・クラスのロード中およびインスタンス化中にエラーが検出された場合。 ファクトリは、オブジェクトの作成にほかのファクトリが使用されるようにしたくない場合にのみ例外をスローするようにする。 ObjectFactory.getObjectInstance()を参照。
      関連項目:
    • getURLContext

      public static Context getURLContext(String scheme, Hashtable<?,?> environment) throws NamingException
      指定されたURLスキームIDにコンテキストを生成します。

      生成されたコンテキストは、スキームschemeのURLを解決するためのものです。 結果のコンテキストは特定のURLに結び付いていません。 このコンテキストは指定されたスキームで任意のURLを処理できます。

      結果のコンテキストを生成するファクトリのクラス名は、次に指定されるように、パッケージに名前変換scheme-idURLContextFactory (ftpスキームIDであればftpURLContextFactoryなど)を持っています。 Context.URL_PKG_PREFIXES環境プロパティ(システム・プロパティから取得した値やアプリケーション・リソース・ファイル)には、コロン区切りのパッケージ接頭部のリストが含まれています。 プロパティの各パッケージ接頭辞には、指定された順序でファクトリ・クラスのロードが試みられます。 デフォルトのパッケージ接頭辞はcom.sun.jndi.urlです(指定されたパッケージがどれも成功しない場合、このデフォルトが試される)。 完全なパッケージ名がパッケージ接頭辞を使って構築され、スキームIDに連結されます。

      たとえば、スキームIDがldapでContext.URL_PKG_PREFIXESプロパティがcom.widget:com.wiz.jndiを含む場合、ネーミング・マネージャは次のクラスのロードを試行し、どれか1つをインスタンス化できるまでこれを続けます。

      • com.widget.ldap.ldapURLContextFactory
      • com.wiz.jndi.ldap.ldapURLContextFactory
      • com.sun.jndi.url.ldap.ldapURLContextFactory
      パッケージ接頭辞がどれも成功しない場合、nullが返されます。

      ファクトリがインスタンス化されると、そのインスタンスは次のパラメータで呼び出され、コンテキストを生成します。

      factory.getObjectInstance(null, environment);

      たとえば、LDAP URLコンテキスト・ファクトリでgetObjectInstance()を上記のように呼び出すと、LDAP URLを解決できるコンテキストが返されます(ldap://ldap.wiz.com/o=wiz,c=us、ldap://ldap.umich.edu/o=umich,c=usなど)。

      オブジェクト・ファクトリ(ObjectFactoryインタフェースを実装しているオブジェクト)はpublicであることが必要で、また引数を取らないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュールにある場合は、そのモジュールがjava.namingモジュールにエクスポートするパッケージ内にある必要があります。

      パラメータ:
      scheme - コンテキストがサポートするURLのnull以外のスキームID。
      environment - nullの可能性がある、オブジェクト・ファクトリおよびコンテキストの生成に使用される環境プロパティ。
      戻り値:
      スキームID schemeを使用してURLを解決するコンテキスト。コンテキストを生成するファクトリが検出されない場合はnull
      例外:
      NamingException - コンテキストの作成中にネーミング例外が発生した場合。
      関連項目:
    • getInitialContext

      public static Context getInitialContext(Hashtable<?,?> env) throws NamingException
      指定された環境プロパティを使って、初期コンテキストを生成します。

      次のように行います。

      • InitialContextFactoryBuilderがインストールされている場合、それを使って初期コンテキストを生成するファクトリを生成します
      • そうでない場合は、Context.INITIAL_CONTEXT_FACTORY環境プロパティで指定されたクラスが使われます
        • 最初に、ServiceLoader機構は、現在のスレッド・コンテキスト・クラス・ローダーを使用してInitialContextFactoryプロバイダの位置を特定しようとします
        • それに失敗した場合、この実装は、組み込みのメカニズムを使用して適切なInitialContextFactoryの場所を見つけようとします
          (初期コンテキスト・ファクトリ(InitialContextFactoryインタフェースを実装するオブジェクト)はパブリックである必要があり、引数を受け入れないパブリック・コンストラクタを持たなければならないことに注意してください。
          ファクトリが名前付きモジュールにある場合は、そのモジュールがjava.namingモジュールにエクスポートするパッケージ内にある必要があります。

      パラメータ:
      env - nullの可能性がある、コンテキストの生成時に使用される環境プロパティ。
      戻り値:
      null以外の初期コンテキスト。
      例外:
      NoInitialContextException - Context.INITIAL_CONTEXT_FACTORYプロパティが検出されないか、存在しないクラスまたはインスタンス化できないクラスをこのプロパティが指定した場合、あるいはほかの理由で初期コンテキストを生成できない場合。
      NamingException - ほかのネーミング例外が見つかった場合。
      関連項目:
    • setInitialContextFactoryBuilder

      public static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder) throws NamingException
      InitialContextFactoryビルダーがビルダーであることを指定します。

      ビルダーをインストールできるのは、実行中のスレッドにセキュリティ・マネージャがインストールを許可した場合に限ります。 一度インストールすると、ビルダーを置き換えることはできません。

      パラメータ:
      builder - インストールする初期コンテキスト・ファクトリ・ビルダー。 nullの場合、ビルダーが設定されていない。
      例外:
      SecurityException - セキュリティ上の理由から、ビルダーをインストールできない場合。
      NamingException - セキュリティに関連しない理由で、ビルダーをインストールできない場合。
      IllegalStateException - ビルダーがすでにインストールされている場合。
      関連項目:
    • hasInitialContextFactoryBuilder

      public static boolean hasInitialContextFactoryBuilder()
      初期コンテキスト・ファクトリ・ビルダーが設定されているかどうかを判定します。
      戻り値:
      初期コンテキスト・ファクトリ・ビルダーが設定されている場合はtrue、そうでない場合はfalse。
      関連項目:
    • getContinuationContext

      public static Context getContinuationContext(CannotProceedException cpe) throws NamingException
      コンテキスト操作を継続するコンテキストを生成します。

      複数の名前空間にまたがる名前で操作を行う場合、1つのネーミング・システムのコンテキストがその操作を次のネーミング・システムに渡す必要があることがあります。 コンテキスト実装はこれを行うために、どれだけ処理したかを正確に示す情報を格納するCannotProceedExceptionを最初に構築します。 次に、getContinuationContextを呼び出すことによって、JNDIから継続コンテキストを取得します。 コンテキスト実装は継続コンテキストの同じ操作を呼び出して、まだ解決されていない名前の残りの部分を使ってコンテキスト操作を再開します。

      cpeパラメータを使用する前にこのメソッドは、プロパティCPEの値をcpeに設定することによって、そのオブジェクトに関連付けられている環境を更新します。 このプロパティは継続コンテキストが継承し、そのコンテキストのサービス・プロバイダがこの例外のフィールドを調べるのに使います。

      パラメータ:
      cpe - この継続をトリガーしたnull以外の例外。
      戻り値:
      操作を継続するnull以外のContextオブジェクト。
      例外:
      NamingException - ネーミング例外が発生した場合。
    • getStateToBind

      public static Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws NamingException
      オブジェクトのバインディングの状態を取得します。

      DirContextインタフェースを実装しているサービス・プロバイダは、このメソッドではなくDirectoryManager.getStateToBind()を使うようにします。 Contextインタフェースのみを実装するサービス・プロバイダは、このメソッドを使用するようにしてください。

      このメソッドは、環境プロパティのContext.STATE_FACTORIESプロパティおよびnameCtxに関連したプロバイダ・リソース・ファイルのContext.STATE_FACTORIESプロパティで指定された状態ファクトリを、この順番で使用します。 このプロパティの値は、順に試されるファクトリ・クラス名の、コロンで区切られたリストであり、オブジェクトの状態を返すことに成功した最初の値が使用されます。 この方法でオブジェクトの状態を何も取得できない場合、オブジェクト自体を返します。 状態の取得中に例外が検出された場合、その例外は呼出し側に引き渡されます。

      状態ファクトリ(StateFactoryインタフェースを実装しているオブジェクト)はpublicであることが必要で、また引数を取らないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュールにある場合は、そのモジュールがjava.namingモジュールにエクスポートするパッケージ内にある必要があります。

      作成されるオブジェクトの名前を指定するために、必要に応じてnameパラメータやnameCtxパラメータを使用できます。 詳細は、ObjectFactory.getObjectInstance()にある「名前パラメータとコンテキスト・パラメータ」の説明を参照してください。

      このメソッドはReferenceableオブジェクトを返すことがあります。 このオブジェクトを取得するサービス・プロバイダは、このオブジェクトを直接格納するか、あるいはReferenceable.getReference()を使ってその参照を抽出して代わりにそれを格納するかを選択できます。

      パラメータ:
      obj - バインドする状態を取得する対象となるnull以外のオブジェクト。
      name - nameCtxを基準にしたこのオブジェクトの名前、または名前が指定されていない場合はnull。
      nameCtx - nameパラメータが基準にして指定されているコンテキスト、またはnameがデフォルトの初期コンテキストを基準にしている場合はnull。
      environment - 状態ファクトリとオブジェクトの状態の作成で使用されるnullの可能性がある環境。
      戻り値:
      objのバインディングの状態を表すnull以外のオブジェクト。 オブジェクト(obj)自体の場合もある。
      例外:
      NamingException - アクセスされたいずれかのファクトリが例外をスローした場合、またはファクトリやオブジェクト・クラスのロード中およびインスタンス化中にエラーが検出された場合。 ファクトリは、オブジェクトの作成にほかのファクトリが使用されるようにしたくない場合にのみ例外をスローするようにする。 StateFactory.getStateToBind()を参照してください。
      導入されたバージョン:
      1.3
      関連項目: