JavaTM Platform
Standard Ed. 6

javax.naming.spi
インタフェース DirStateFactory

すべてのスーパーインタフェース:
StateFactory

public interface DirStateFactory
extends StateFactory

このインタフェースは、オブジェクトと該当属性とのバインディングの状態を取得するファクトリを表します。

JNDI フレームワークでは、オブジェクトファクトリを使ってオブジェクト実装を動的にロードできます。

DirStateFactory は StateFactory を拡張して、getStateToBind() メソッドが Attributes インスタンスを指定して返すことができるようします。DirStateFactory 実装は DirContext サービスプロバイダが使用するものです。呼び出し側が DirContext.bind() を使ってオブジェクトをバインドするとき、属性のセットもそのオブジェクトにバインドされるよう指定できます。バインドされるオブジェクトと属性は、ファクトリの getStateToBind() メソッドに渡されます。ファクトリは、オブジェクトと属性を処理する場合はバインドされるオブジェクトと属性の該当ペアを返します。オブジェクトを処理しない場合、ファクトリは null を返す必要があります。

たとえば、呼び出し側がプリンタオブジェクトをプリンタ関連の属性とバインドすることがあります。

 ctx.rebind("inky", printer, printerAttrs);
ctx の LDAP サービスプロバイダは (DirectoryManager.getStateToBind() を使って間接的に) DirStateFactory を使用して、DirStateFactoryprinter および printerAttrs を指定します。LDAP ディレクトリのファクトリは printer を属性のセットに変え、それを printerAttrs とマージします。続いてサービスプロバイダがその属性を使って LDAP エントリを生成し、ディレクトリを更新します。

DirStateFactoryStateFactory を拡張するので、2 つの getStateToBind() メソッドを持ちます。 この 2 つのメソッドは属性引数が異なります。DirectoryManager.getStateToBind() は属性引数を受け入れる形式だけを使用し、NamingManager.getStateToBind() は属性引数を受け入れない形式だけを使用します。

DirStateFactory の getStateToBind() メソッドのどちらかの形式が、異なるパラメータを使って複数回呼び出されることがあります。実装はスレッドセーフです。

導入されたバージョン:
1.3
関連項目:
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes), DirObjectFactory

入れ子のクラスの概要
static class DirStateFactory.Result
          DirStateFactory.getStateToBind() の結果を返す、オブジェクトと属性のペアです。
 
メソッドの概要
 DirStateFactory.Result 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 はこれを続けます。

ファクトリが例外をスローすると、その例外は DirectoryManager.getStateToBind() の呼び出し側に渡されます。null 以外の答えを生成する可能性のあるほかのファクトリの検索は停止します。ファクトリは、それが目的の唯一のファクトリであり、ほかのファクトリを検索する必要がないことが確実な場合にのみ、例外をスローするようにします。このファクトリが指定された引数でオブジェクトを生成できない場合は、null を返します。

name パラメータおよび nameCtx パラメータを任意に使用して、生成中のオブジェクトの名前を指定できます。詳細は、ObjectFactory.getObjectInstance() の「名前パラメータとコンテキストパラメータ」の説明を参照してください。ファクトリが nameCtx を使う場合は、その使用を並行アクセスと同期化するようにします。 コンテキスト実装はスレッドセーフであることが保証されていないためです。

nameinAttrs、および environment の各パラメータは、呼び出し側が所有します。実装はこれらのオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、複製またはコピーに対する参照を保持することがあります。このメソッドが返すオブジェクトは呼び出し側が所有します。実装は続いてこれを変更しません。実装には、呼び出し側が所有するのと同じ新しい Attributes オブジェクトか、あるいは元の inAttrs パラメータへの参照が含まれます。

パラメータ:
obj - 状態を取得する、null の可能性があるオブジェクト
name - nameCtx に関連するこのオブジェクトの名前。 または、名前を指定しない場合は null
nameCtx - name パラメータの指定に関連するコンテキスト、 または name がデフォルトの初期コンテキストに 関連する場合は null
environment - オブジェクトの状態の生成に 使用される、null の可能性がある環境
inAttrs - オブジェクトにバインドされる、null の可能性がある属性。 ファクトリは inAttrs を変更できない
戻り値:
オブジェクトのバインディングの状態およびバインドされる該当の属性を 含む Result オブジェクトがこのファクトリを使用しない場合は null
例外:
NamingException - オブジェクトの状態を取得しようとしているときに このファクトリが例外を検出し、他のファクトリが 試行されない場合
関連項目:
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes)

JavaTM Platform
Standard Ed. 6

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

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