インタフェースStateFactory
- 既知のすべてのサブインタフェース:
DirStateFactory
JNDIフレームワークでは、オブジェクト・ファクトリを使用してオブジェクト実装を動的にロードできます。 たとえば、名前空間でバインドされたプリンタを検索する場合、印刷サービスがプリンタ名をReference sにバインドすると、プリンタReferenceを使用してプリンタ・オブジェクトを作成し、ルックアップの呼び出し元がルックアップ後にプリンタ・オブジェクトを直接操作できるようにすることができます。
ObjectFactoryは、特定のタイプのオブジェクトの作成を担当します。 前述の例では、Printerオブジェクトを作成するためのPrinterObjectFactoryがある場合があります。
逆のプロセスでは、オブジェクトが名前空間にバインドされている場合、JNDIは状態ファクトリを提供します。 ここでもプリンタを例にとって、プリンタ・オブジェクトが更新され、再度バインドされる場合を考えます。
ctx.rebind("inky", printer);
ctxのサービス・プロバイダは、状態ファクトリを使用して、そのネームスペースへのバインドのためにprinterの状態を取得します。 Printer型オブジェクトの状態ファクトリは、ネーミング・システム内の記憶域に対してよりコンパクトなオブジェクトを返す場合があります。
状態ファクトリは、StateFactoryインタフェースを実装する必要があります。 またファクトリ・クラスはpublicであることが必要で、かつパラメータを取れないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュール内にある場合、そのファクトリは、そのモジュールによってjava.namingモジュールにエクスポートされるパッケージ内に存在する必要があります。
状態ファクトリのgetStateToBind()メソッドは、異なるパラメータを使用して複数回起動できます。 実装はスレッド・セーフです。
StateFactoryは、Contextインタフェースのみを実装するサービス・プロバイダでの使用を目的としています。 DirStateFactoryは、DirContextインタフェースを実装するサービス・プロバイダでの使用を目的としています。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
メソッドのサマリー
-
メソッドの詳細
-
getStateToBind
Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws NamingExceptionオブジェクトのバインディングの状態を取得します。NamingManager.getStateToBind()は、状態ファクトリに連続してロードし、null以外の回答が生成されるまで、このメソッドを呼び出します。DirectoryManager.getStateToBind()は、状態ファクトリに連続してロードします。 ファクトリがDirStateFactoryを実装している場合、DirectoryManagerはDirStateFactory.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- オブジェクトの状態を取得しようとしているときにこのファクトリが例外を検出し、ほかのファクトリが試行されない場合。- 関連項目:
-