- 既知のすべてのサブインタフェース:
DirObjectFactory
JNDIフレームワークでは、オブジェクト・ファクトリを使用してオブジェクト実装を動的にロードできます。 たとえば名前空間にバインドされたプリンタを検索する場合、印刷サービスがプリンタ名をReferenceにバインドすると、プリンタReferenceを使ってプリンタ・オブジェクトを生成して、ルックアップの呼出し側がルックアップ後に直接プリンタ・オブジェクトで操作できるようになります。
ObjectFactory
は、特定のタイプのオブジェクトの作成を担当します。 上記の例では、Printerオブジェクトの生成にPrinterObjectFactoryを使うことができます。
オブジェクト・ファクトリは、ObjectFactory
インタフェースを実装する必要があります。 またファクトリ・クラスはpublicであることが必要で、かつパラメータを取れないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュール内にある場合、そのファクトリは、そのモジュールによってjava.naming
モジュールにエクスポートされるパッケージ内に存在する必要があります。
オブジェクト・ファクトリのgetObjectInstance()
メソッドは、異なるパラメータを使用して複数回起動できます。 実装はスレッド・セーフです。
このクラスのドキュメントのURLの記載は、RFC 1738およびその関連RFCで定義されているURL文字列を指しています。 それは、そこで記述されている構文規則に準拠する任意の文字列であり、対応するサポートがjava.net.URLクラスまたはWebブラウザに必ずあるとは限りません。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
メソッドのサマリー
-
メソッドの詳細
-
getObjectInstance
Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception指定された位置情報または参照情報を使って、オブジェクトを生成します。このオブジェクトの特殊要件は、
environment
を使用して指定されます。 こうした環境プロパティの一例としては、ユーザー識別情報があります。NamingManager.getObjectInstance()
は、オブジェクト・ファクトリに連続してロードし、null以外の回答が生成されるまで、このメソッドを呼び出します。 オブジェクト・ファクトリによって例外がスローされると、NamingManager.getObjectInstance()
(また、null以外の回答を生成できる他のファクトリの検索は行われません)のコール元に例外が渡されます。 オブジェクト・ファクトリは、それが目的の唯一のファクトリであり、ほかのオブジェクト・ファクトリを検索する必要がないことが確実な場合に限り、例外をスローするようにします。 このファクトリが指定された引数でオブジェクトを生成できない場合は、nullを返します。URLコンテキスト・ファクトリは特殊なObjectFactoryで、URLまたはURLが位置を指定するオブジェクトを解決するコンテキストを生成します。 URLコンテキスト・ファクトリの
getObjectInstance()
メソッドは、次のルールに従います。obj
がnullの場合、このファクトリに関連したスキームのURLを解決するコンテキストを生成します。 結果のコンテキストは特定のURLに結び付いていません。このコンテキストは、このファクトリのスキームIDを使用して任意のURLを処理できます。 たとえば、LDAP URLコンテキスト・ファクトリでobj
をnullに設定してgetObjectInstance()
を呼び出すと、"ldap://ldap.wiz.com/o=wiz,c=us"や"ldap://ldap.umich.edu/o=umich,c=us"などのLDAP URLを解決できるコンテキストが返されます。-
obj
がURL文字列である場合、URLによって識別されたオブジェクト(通常はコンテキスト)を生成します。 たとえば、それがLDAP URLコンテキスト・ファクトリであるとします。obj
がldap://ldap.wiz.com/o=wiz,c=usの場合、getObjectInstance()は、LDAPサーバーldap.wiz.comの識別名「o=wiz, c=us」によって指定されたコンテキストを返します。 続いてこのコンテキストを使って、そのコンテキストに関連するLDAP名(cn=Georgeなど)を解決できます。 -
obj
がURL文字列の配列である場合、URLは、それらが参照するコンテキストという点で同等であると仮定します。 URLが等しいこと、または等しい必要があることの確認はコンテキスト・ファクトリに任されています。 URLの配列内の順序は重要ではありません。 getObjectInstance()が返すオブジェクトは、単一のURLの場合と同じです。 これは、URLによって指定されたオブジェクトです。 -
obj
が他の型の場合、getObjectInstance()
の動作はコンテキスト・ファクトリの実装によって決まります。
name
およびenvironment
パラメータは、コール元が所有します。 実装はこれらのオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、複製またはコピーに対する参照を保持することがあります。名前パラメータとコンテキスト・パラメータ。 作成されるオブジェクトの名前を指定するために、オプションで
name
パラメータやnameCtx
パラメータを使用できます。name
は、コンテキストnameCtx
を基準にした、オブジェクトの名前です。 オブジェクトを命名できるコンテキストが複数あることもありますが、その場合は呼出し側が選択します。 適切な経験則として、使用可能な「もっとも深い」コンテキストを選択することをお薦めします。nameCtx
がnullの場合、name
はデフォルトの初期コンテキストを基準にしています。 名前を指定しない場合は、name
パラメータをnullにします。 コンテキスト実装はスレッド・セーフであることが保証されないため、nameCtx
を使用する場合、ファクトリはその使用を並行アクセスに対して同期化するようにします。- パラメータ:
obj
- オブジェクトの作成で使用できる位置または参照情報を含むnullの可能性があるオブジェクト。name
-nameCtx
を基準にしたこのオブジェクトの名前、または名前が指定されていない場合はnull。nameCtx
-name
パラメータが基準にして指定されているコンテキスト、またはname
がデフォルトの初期コンテキストを基準にしている場合はnull。environment
- オブジェクトの作成で使用されるnullの可能性がある環境。- 戻り値:
- 生成されたオブジェクト。オブジェクトを生成できない場合はnull。
- 例外:
Exception
- オブジェクトの生成中にこのオブジェクト・ファクトリが例外を検出し、ほかのオブジェクト・ファクトリが試行されない場合。- 関連項目:
-