- すべてのスーパー・インタフェース:
StateFactory
JNDIフレームワークを使用すると、object factories
を介してオブジェクト実装を動的にロードできます。
DirStateFactory
は、Attributes
インスタンスをgetStateToBind()
メソッドに指定して返すことで、StateFactory
を拡張します。 DirStateFactory
実装は、DirContext
サービス・プロバイダによって使用されることを意図しています。 呼出し元がDirContext.bind()
を使用してオブジェクトをバインドする場合、オブジェクトにバインドする属性のセットを指定することもできます。 バインドするオブジェクトおよび属性は、ファクトリのgetStateToBind()
メソッドに渡されます。 ファクトリは、オブジェクトと属性を処理する場合はバインドされるオブジェクトと属性の該当ペアを返します。 オブジェクトを処理しない場合、ファクトリはnullを返す必要があります。
たとえば、呼出し側がプリンタ・オブジェクトをプリンタ関連の属性とバインドすることがあります。
ctx.rebind("inky", printer, printerAttrs);
ctx
のLDAPサービス・プロバイダは、DirStateFactory
(DirectoryManager.getStateToBind()
を介して間接的に)を使用し、printer
およびprinterAttrs
を指定します。 LDAPディレクトリのファクトリは、printer
を一連の属性に変換し、それをprinterAttrs
とマージする場合があります。 続いてサービス・プロバイダがその属性を使ってLDAPエントリを生成し、ディレクトリを更新します。
DirStateFactory
はStateFactory
を拡張するため、2つのgetStateToBind()
メソッドがあり、一方はattributes引数によって他方とは異なります。 DirectoryManager.getStateToBind()
はattributes引数を受け入れるフォームのみを使用しますが、NamingManager.getStateToBind()
はattributes引数を受け入れないフォームのみを使用します。
DirStateFactoryのgetStateToBind()
メソッドのどちらの形式でも、異なるパラメータを使用して複数回起動できます。 実装はスレッド・セーフです。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
ネストされたクラスのサマリー
修飾子と型インタフェース説明static class
DirStateFactory.getStateToBind()の結果を返す、オブジェクトと属性のペアです。 -
メソッドのサマリー
修飾子と型メソッド説明getStateToBind
(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment, Attributes inAttrs) 変換対象のオブジェクトおよび属性を、バインディングするためにオブジェクトの状態を取得します。インタフェースjavax.naming.spi.StateFactoryで宣言されたメソッド
getStateToBind
-
メソッドの詳細
-
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment, Attributes inAttrs) throws NamingException変換対象のオブジェクトおよび属性を、バインディングするためにオブジェクトの状態を取得します。DirectoryManager.getStateToBind()
は、状態ファクトリに連続してロードします。 ファクトリがDirStateFactory
を実装している場合、DirectoryManager
はこのメソッドを呼び出します。実装されていない場合は、StateFactory.getStateToBind()
を呼び出します。 これは、ファクトリがnull以外の答えを生成するまで行われます。ファクトリによって例外がスローされると、例外は
DirectoryManager.getStateToBind()
のコール元に渡されます。 null以外の答えを生成する可能性のあるほかのファクトリの検索は停止します。 ファクトリは、それが目的の唯一のファクトリであり、ほかのファクトリを検索する必要がないことが確実な場合にのみ、例外をスローするようにします。 このファクトリが指定された引数でオブジェクトを生成できない場合は、nullを返します。作成されるオブジェクトの名前を指定するために、必要に応じて
name
パラメータやnameCtx
パラメータを使用できます。 詳細は、ObjectFactory.getObjectInstance()
にある「名前パラメータとコンテキスト・パラメータ」の説明を参照してください。 コンテキスト実装はスレッド・セーフであることが保証されないため、nameCtx
を使用する場合、ファクトリはその使用を並行アクセスに対して同期化するようにします。name
、inAttrs
およびenvironment
パラメータは、コール元が所有します。 実装はこれらのオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、複製またはコピーに対する参照を保持することがあります。 このメソッドが返すオブジェクトは呼出し側が所有します。 実装は続いてこれを変更しません。 これには、同じようにコール元が所有する新しいAttributes
オブジェクト、または元のinAttrs
パラメータへの参照が含まれます。- パラメータ:
obj
- 状態を取得する、nullの可能性があるオブジェクト。name
-nameCtx
を基準にしたこのオブジェクトの名前、または名前が指定されていない場合はnull。nameCtx
-name
パラメータが基準にして指定されているコンテキスト、またはname
がデフォルトの初期コンテキストを基準にしている場合はnull。environment
- オブジェクトの状態の作成で使用されるnullの可能性がある環境。inAttrs
- オブジェクトにバインドされる、nullの可能性がある属性。 ファクトリはinAttrs
を変更できません。- 戻り値:
- バインドするオブジェクトの状態およびバインドする対応する属性を含む
Result
。オブジェクトがこのファクトリを使用しない場合、null。 - 例外:
NamingException
- オブジェクトの状態を取得しようとしているときにこのファクトリが例外を検出し、ほかのファクトリが試行されない場合。- 関連項目:
-