JavaTM 2 Platform
Std. Ed. v1.3

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

既知のサブインタフェースの一覧:
DirStateFactory

public interface StateFactory

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

JNDI フレームワークでは、オブジェクトファクトリ を使ってオブジェクト実装を動的にロードすることが可能です。たとえば名前空間にバインドされたプリンタを検索する場合、印刷サービスがプリンタ名を Reference にバインドすると、プリンタ Reference を使ってプリンタオブジェクトを生成して、ルックアップの呼び出し側がルックアップ後に直接プリンタオブジェクトで操作できるようになります。

ObjectFactory は特定のタイプのオブジェクト生成を行います。上記の例では、Printer オブジェクトの生成に PrinterObjectFactory が使用できます。

逆のプロセスでは、オブジェクトが名前空間にバインドされている場合、JNDI は state factories を提供します。ここでもプリンタを例にとって、プリンタオブジェクトが更新され、再度バインドされる場合を考えます。

 ctx.rebind("inky", printer);
 
ctx のサービスプロバイダは、状態ファクトリを使って printer の名前空間へのバインディングの状態を取得します。Printer タイプオブジェクトの状態ファクトリは、ネーミングシステムでの記憶のために、よりコンパクトなオブジェクトを返すことがあります。

状態ファクトリは StateFactory インタフェースを実装する必要があります。またファクトリクラスは public であることが必要で、かつパラメータを取れない public コンストラクタを持つ必要があります。

状態ファクトリの getStateToBind() メソッドは、異なるパラメータを使って複数回呼び出されることがあります。実装はスレッドに対して安全です。

StateFactoryContext インタフェースだけを実装しているサービスプロバイダ対象です。DirStateFactoryDirContext インタフェースを実装しているサービスプロバイダ対象です。

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

メソッドの概要
 Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable environment)
          オブジェクトのバインディングの状態を取得します。
 

メソッドの詳細

getStateToBind

public Object getStateToBind(Object obj,
                             Name name,
                             Context nameCtx,
                             Hashtable environment)
                      throws NamingException
オブジェクトのバインディングの状態を取得します。

NamingManager.getStateToBind() は状態ファクトリに連続的にロードし、1 つが null 以外の答えを生成するまで状態ファクトリ上でこのメソッドを呼び出し続けます。DirectoryManager.getStateToBind() は状態ファクトリに連続的にロードします。ファクトリが DirStateFactory を実装していれば、DirectoryManagerDirStateFactory.getStateToBind() を呼び出します。そうでない場合は StateFactory.getStateToBind() を呼び出します。

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

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

name パラメータおよび environment パラメータは、呼び出し側が所有します。実装はこれらのオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、複製またはコピーに対する参照を保持することがあります。

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