- 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
-
-
メソッドのサマリー
修飾子と型 メソッド 説明 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は、オブジェクト・ファクトリをロードする際に使用するポリシーを決定します。
-
-
-
フィールドの詳細
-
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
指定されたオブジェクトおよび環境にオブジェクトのインスタンスを生成します。オブジェクト・ファクトリ・ビルダーがインストールされている場合、そのビルダーを使って、オブジェクトを生成するファクトリを生成します。 そうでない場合は、次の規則を使用してオブジェクトを生成します。
refInfo
がファクトリ・クラス名を格納するReference
またはReferenceable
である場合、指定されたファクトリを使用してオブジェクトを生成します。 ファクトリを生成できない場合はrefInfo
を返します。 JDK 1.1では、参照で指定された位置からファクトリ・クラスをロードする必要がある場合、SecurityManager
がインストールされている必要があります。インストールされていない場合、ファクトリ生成は失敗します。 ファクトリの生成中に例外が検出された場合、その例外は呼出し側に引き渡されます。refInfo
がファクトリ・クラス名を持たないReference
またはReferenceable
で、かつアドレスがアドレス型URLのStringRefAddr
である場合、各URLのスキームIDに対応するURLコンテキスト・ファクトリでオブジェクトの生成を試みます(getURLContext()
を参照)。 これが失敗した場合は、次の手順に進みます。- 環境の
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(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つをインスタンス化できるまでこれを続けます。- com.widget.ldap.ldapURLContextFactory
- com.wiz.jndi.ldap.ldapURLContextFactory
- com.sun.jndi.url.ldap.ldapURLContextFactory
ファクトリがインスタンス化されると、そのインスタンスは次のパラメータで呼び出され、コンテキストを生成します。
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
- コンテキストの作成中にネーミング例外が発生した場合。- 関連項目:
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
環境プロパティで指定されたクラスが使われます- 最初に、ServiceLoader機構は、現在のスレッド・コンテキスト・クラス・ローダーを使用して
InitialContextFactory
プロバイダの位置を特定しようとします - それに失敗した場合、この実装は、組み込みのメカニズムを使用して適切な
InitialContextFactory
の場所を見つけようとします
(初期コンテキスト・ファクトリ(InitialContextFactoryインタフェースを実装するオブジェクト)はパブリックである必要があり、引数を受け入れないパブリック・コンストラクタを持たなければならないことに注意してください。 ファクトリが名前付きモジュールにある場合は、そのモジュールがjava.naming
モジュールにエクスポートするパッケージ内にある必要があります。
- 最初に、ServiceLoader機構は、現在のスレッド・コンテキスト・クラス・ローダーを使用して
- パラメータ:
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コンストラクタを持つ必要があります。 ファクトリが名前付きモジュールにある場合は、そのモジュールが
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
- 関連項目:
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)
-
-