|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface ObjectFactory
このインタフェースは、オブジェクトを生成するファクトリを表します。
JNDI フレームワークでは、「オブジェクトファクトリ」を使ってオブジェクト実装を動的にロードすることが可能です。たとえば名前空間にバインドされたプリンタを検索する場合、印刷サービスがプリンタ名を Reference にバインドすると、プリンタ Reference を使ってプリンタオブジェクトを生成して、ルックアップの呼び出し側がルックアップ後直接プリンタオブジェクトで操作できます。
ObjectFactory は特定のタイプのオブジェクトの生成を行います。上記の例では、Printer オブジェクトの生成に PrinterObjectFactory を使うことができます。
オブジェクトファクトリは ObjectFactory インタフェースを実装する必要があります。またファクトリクラスは public であることが必要で、かつパラメータを取れない public コンストラクタを持つ必要があります。
オブジェクトファクトリの getObjectInstance() メソッドは、異なるパラメータを使って複数回呼び出されることがあります。実装はスレッドセーフです。
このクラスのドキュメントの URL の記載は、RFC 1738 およびその関連 RFC で定義されている URL 文字列を適用しています。ドキュメントの URL は RFC 1738 などで述べられている構文に従う文字列であって、必ずしも java.net.URL クラスまたは Web ブラウザに該当するサポートがあるわけではありません。
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, ?>)
,
NamingManager.getURLContext(java.lang.String, java.util.Hashtable, ?>)
,
ObjectFactoryBuilder
,
StateFactory
メソッドの概要 | |
---|---|
Object |
getObjectInstance(Object obj,
Name name,
Context nameCtx,
Hashtable<?,?> environment)
指定された位置情報または参照情報を使って、オブジェクトを生成します。 |
メソッドの詳細 |
---|
Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception
このオブジェクトの特殊要件は、environment
を使って指定されます。こうした環境プロパティの一例としては、ユーザ識別情報があります。
NamingManager.getObjectInstance() は、オブジェクトファクトリに連続的にロードし、1 つが null 以外の答えを生成するまでオブジェクトファクトリ上でこのメソッドを呼び出し続けます。オブジェクトファクトリが例外をスローすると、その例外は NamingManager.getObjectInstance() の呼び出し側に引き渡され、null 以外の答えを生成する可能性のある他のファクトリの検索は行われません。オブジェクトファクトリは、それが目的の唯一のファクトリであり、ほかのオブジェクトファクトリを検索する必要がないことが確実な場合に限り、例外をスローするようにします。このファクトリが指定された引数でオブジェクトを生成できない場合は、null を返します。
「URL コンテキストファクトリ」は特殊な ObjectFactory で、URL または URL が位置を指定するオブジェクトを解決するコンテキストを生成します。URL コンテキストファクトリの getObjectInstance() メソッドは、以下の規則に従います。
obj
が null の場合、このファクトリに関連したスキーマの URL を解決するコンテキストを生成します。そのコンテキストは特定の URL とは結び付けられません。このコンテキストはこのファクトリのスキーマ ID を使って任意の URL を処理できます。たとえば、LDAP URL コンテキストファクトリで null に設定された obj
を持つ 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 の識別名によって指定されたコンテキストを返します。続いてこのコンテキストを使って、そのコンテキストに関連する 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
に関連するこのオブジェクトの名前、または名前が指定されない場合は nullnameCtx
- name
パラメータの指定に関連するコンテキスト、または name
がデフォルトの初期コンテキストに関連する場合は nullenvironment
- null の可能性がある、オブジェクトの生成に使用される環境
Exception
- オブジェクトの生成中にこのオブジェクトファクトリが例外を検出し、ほかのオブジェクトファクトリが試行されない場合NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, ?>)
,
NamingManager.getURLContext(java.lang.String, java.util.Hashtable, ?>)
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。