JavaTM 2 Platform
Std. Ed. v1.3

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.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.