- 既知のすべてのサブインタフェース:
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
- オブジェクトの状態を取得しようとしているときにこのファクトリが例外を検出し、ほかのファクトリが試行されない場合。- 関連項目:
-