JavaTM 2
Platform
Std. Ed. v1.4.0

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

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

public interface DirStateFactory
extends StateFactory

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

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

DirStateFactoryStateFactory を拡張して、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

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 を使う場合は、その使用を並行アクセスと同期化するようにします。コンテキスト実装はスレッドセーフであることが保証されていないためです。

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 2
Platform
Std. Ed. v1.4.0

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

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.