JavaTM 2 Platform
Standard Ed. 5.0

javax.naming.spi
クラス NamingManager

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

public class NamingManager
extends Object

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

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

このクラスのドキュメントの URL の記載は、RFC 1738 およびその関連 RFC で定義されている URL 文字列を適用しています。ドキュメントの URL は RFC 1738 などで述べられている構文に従う文字列であって、必ずしも java.net.URL クラスまたは Web ブラウザに該当するサポートがあるわけではありません。

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

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

導入されたバージョン:
1.3

フィールドの概要
static String CPE
          getContinuationContext() がその CannotProceedException パラメータの値を格納する環境プロパティの名前を保持する定数です。
 
メソッドの概要
static Context getContinuationContext(CannotProceedException cpe)
          コンテキスト操作を継続するコンテキストを生成します。
static Context getInitialContext(Hashtable<?,?> env)
          指定された環境プロパティを使って、初期コンテキストを生成します。
static Object getObjectInstance(Object refInfo, Name name, Context nameCtx, Hashtable<?,?> environment)
          指定されたオブジェクトおよび環境にオブジェクトのインスタンスを生成します。
static Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)
          オブジェクトのバインディングの状態を取得します。
static Context getURLContext(String scheme, Hashtable<?,?> environment)
          指定された URL スキーマ ID にコンテキストを生成します。
static boolean hasInitialContextFactoryBuilder()
          初期コンテキストファクトリビルダが設定されているかどうかを判定します。
static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder)
          InitialContextFactory ビルダがビルダであることを指定します。
static void setObjectFactoryBuilder(ObjectFactoryBuilder builder)
          ObjectFactoryBuilder は、オブジェクトファクトリをロードする際に使用するポリシーを決定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

CPE

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

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

導入されたバージョン:
1.3
関連項目:
getContinuationContext(javax.naming.CannotProceedException), 定数フィールド値
メソッドの詳細

setObjectFactoryBuilder

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

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

パラメータ:
builder - インストールするファクトリビルダ。null の場合、インストールされるビルダがない
例外:
SecurityException - セキュリティ上の理由から、ビルダをインストールできない場合
NamingException - セキュリティ関連以外の理由でビルダをインストールできない場合
IllegalStateException - ファクトリがすでにインストールされている場合
関連項目:
getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable), ObjectFactory, ObjectFactoryBuilder, SecurityManager.checkSetFactory()

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 コンストラクタを持つ必要があります。

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 - アクセスしたファクトリの 1 つが例外をスローした場合、またはファクトリおよびオブジェクトクラスのロードおよびインスタンス化中にエラーが見つかった場合。ファクトリは、オブジェクト生成にほかのファクトリを使用したくない場合に限り例外をスローするようにする。ObjectFactory.getObjectInstance() を参照
関連項目:
getURLContext(java.lang.String, java.util.Hashtable), ObjectFactory, ObjectFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)

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 つをインスタンス化できるまでこれを続けます。

パッケージ接頭辞がどれも成功しない場合、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 コンストラクタを持つ必要があります。

パラメータ:
scheme - コンテキストがサポートする URL の null 以外のスキーマ ID
environment - null の可能性がある、オブジェクトファクトリおよびコンテキストの生成に使用される環境プロパティ
戻り値:
スキーマ ID scheme を使って URL を解釈処理するコンテキスト。コンテキストを生成するファクトリが検出されない場合は null
例外:
NamingException - コンテキストの生成中にネーミング例外が発生した場合
関連項目:
getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable), ObjectFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)

getInitialContext

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

InitialContextFactoryBuilder がインストールされている場合、それを使って初期コンテキストを生成するファクトリを生成します。そうでない場合は、Context.INITIAL_CONTEXT_FACTORY 環境プロパティで指定されたクラスが使われます。初期コンテキストファクトリ (InitialContextFactory インタフェースを実装しているオブジェクト) は public であることが必要で、また引数を取らない public コンストラクタを持っている必要があります。

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

setInitialContextFactoryBuilder

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

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

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

hasInitialContextFactoryBuilder

public static boolean hasInitialContextFactoryBuilder()
初期コンテキストファクトリビルダが設定されているかどうかを判定します。

戻り値:
初期コンテキストファクトリビルダが設定されている場合は true、そうでない場合は false
関連項目:
setInitialContextFactoryBuilder(javax.naming.spi.InitialContextFactoryBuilder)

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 コンストラクタを持つ必要があります。

name パラメータおよび nameCtx パラメータを任意に使用して、生成中のオブジェクトの名前を指定できます。詳細は、ObjectFactory.getObjectInstance() の「名前パラメータとコンテキストパラメータ」の説明を参照してください。

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

パラメータ:
obj - バインドする状態の取得対象となる null 以外のオブジェクト
name - nameCtx に関連するこのオブジェクトの名前、または名前が指定されない場合は null
nameCtx - name パラメータの指定に関連するコンテキスト、または name がデフォルトの初期コンテキストに関連する場合は null
environment - 状態ファクトリおよびオブジェクトの状態の生成に使用される、null の可能性がある環境
戻り値:
obj のバインディングの状態を表す null 以外のオブジェクト。オブジェクト (obj) 自体の場合もある
例外:
NamingException - アクセスしたファクトリの 1 つが例外をスローした場合、またはファクトリおよびオブジェクトクラスのロードおよびインスタンス化中にエラーが見つかった場合。ファクトリは、オブジェクト生成にほかのファクトリを使用したくない場合に限り例外をスローするようにする。StateFactory.getStateToBind() を参照
導入されたバージョン:
1.3
関連項目:
StateFactory, StateFactory.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable), DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes)

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。