|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
このインタフェースは、オブジェクトのバインディングの状態を取得するファクトリを表します。
JNDI フレームワークでは、オブジェクトファクトリ を使ってオブジェクト実装を動的にロードすることが可能です。たとえば名前空間にバインドされたプリンタを検索する場合、印刷サービスがプリンタ名を Reference にバインドすると、プリンタ Reference を使ってプリンタオブジェクトを生成して、ルックアップの呼び出し側がルックアップ後に直接プリンタオブジェクトで操作できるようになります。
ObjectFactory は特定のタイプのオブジェクト生成を行います。上記の例では、Printer オブジェクトの生成に PrinterObjectFactory が使用できます。
逆のプロセスでは、オブジェクトが名前空間にバインドされている場合、JNDI は state factories を提供します。ここでもプリンタを例にとって、プリンタオブジェクトが更新され、再度バインドされる場合を考えます。
ctx のサービスプロバイダは、状態ファクトリを使って printer の名前空間へのバインディングの状態を取得します。Printer タイプオブジェクトの状態ファクトリは、ネーミングシステムでの記憶のために、よりコンパクトなオブジェクトを返すことがあります。ctx.rebind("inky", printer);
状態ファクトリは StateFactory インタフェースを実装する必要があります。またファクトリクラスは public であることが必要で、かつパラメータを取れない public コンストラクタを持つ必要があります。
状態ファクトリの getStateToBind() メソッドは、異なるパラメータを使って複数回呼び出されることがあります。実装はスレッドセーフです。
StateFactory は Context インタフェースだけを実装しているサービスプロバイダ対象です。DirStateFactory は DirContext インタフェースを実装しているサービスプロバイダ対象です。
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)
オブジェクトのバインディングの状態を取得します。 |
メソッドの詳細 |
public Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable environment) throws NamingException
NamingManager.getStateToBind() は状態ファクトリに連続的にロードし、1 つが 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
に関連するこのオブジェクトの名前、または名前が指定されない場合は nullnameCtx
- name
パラメータの指定に関連するコンテキスト、または name
がデフォルトの初期コンテキストに関連する場合は nullenvironment
- 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.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.