|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
このインタフェースは、オブジェクトと該当属性とのバインディングの状態を取得するファクトリを表します。
JNDI フレームワークでは、オブジェクトファクトリを使ってオブジェクト実装を動的にロードできます。
DirStateFactory は StateFactory を拡張して、getStateToBind() メソッドが Attributes インスタンスを指定して返すことができるようします。DirStateFactory 実装は DirContext サービスプロバイダが使用するものです。呼び出し側が DirContext.bind() を使ってオブジェクトをバインドするとき、属性のセットもそのオブジェクトにバインドされるよう指定できます。バインドされるオブジェクトと属性は、ファクトリの getStateToBind() メソッドに渡されます。ファクトリは、オブジェクトと属性を処理する場合はバインドされるオブジェクトと属性の該当ペアを返します。オブジェクトを処理しない場合、ファクトリは null を返す必要があります。
たとえば、呼び出し側がプリンタオブジェクトをプリンタ関連の属性とバインドすることがあります。
ctx の LDAP サービスプロバイダは (DirectoryManager.getStateToBind() を使って間接的に) DirStateFactory を使用して、DirStateFactory に printer および printerAttrs を指定します。LDAP ディレクトリのファクトリは printer を属性のセットに変え、それを printerAttrs とマージします。続いてサービスプロバイダがその属性を使って LDAP エントリを生成し、ディレクトリを更新します。ctx.rebind("inky", printer, printerAttrs);
DirStateFactory は StateFactory を拡張するので、2 つの getStateToBind() メソッドを持ちます。この 2 つのメソッドは属性引数が異なります。DirectoryManager.getStateToBind() は属性引数を受け入れる形式だけを使用し、NamingManager.getStateToBind() は属性引数を受け入れない形式だけを使用します。
DirStateFactory の getStateToBind() メソッドのどちらかの形式が、異なるパラメータを使って複数回呼び出されることがあります。実装はスレッドセーフです。
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 |
メソッドの詳細 |
public 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
を使う場合は、その使用を並行アクセスと同期化するようにします。コンテキスト実装はスレッドセーフであることが保証されていないためです。
name、inAttrs、および environment の各パラメータは、呼び出し側が所有します。実装はこれらのオブジェクトを変更せず、それらへの参照も保持しませんが、複製またはコピーへの参照を保持することがあります。このメソッドが返すオブジェクトは呼び出し側が所有します。実装は続いてこれを変更しません。実装には、呼び出し側が所有するのと同じ新しい Attributes オブジェクトか、あるいは元の inAttrs パラメータへの参照が含まれます。
obj
- 状態を取得する、null の可能性があるオブジェクトname
- nameCtx
に関連するこのオブジェクトの名前、または名前が指定されない場合は nullnameCtx
- name
パラメータの指定に関連するコンテキスト、または name
がデフォルトの初期コンテキストに関連する場合は nullenvironment
- null の可能性のある、オブジェクトの状態の生成に使用される環境inAttrs
- オブジェクトにバインドされる、null の可能性がある属性。ファクトリは inAttrs を変更できない
NamingException
- オブジェクトの状態を取得しようとしているときにこのファクトリが例外を検出し、他のファクトリが試行されない場合DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes)
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.