モジュール java.naming
パッケージ javax.naming.spi

インタフェースObjectFactory

既知のすべてのサブインタフェース:
DirObjectFactory

public interface ObjectFactory
このインタフェースは、オブジェクトを生成するファクトリを表します。

JNDIフレームワークでは、オブジェクト・ファクトリを使用してオブジェクト実装を動的にロードできます。 たとえば名前空間にバインドされたプリンタを検索する場合、印刷サービスがプリンタ名をReferenceにバインドすると、プリンタReferenceを使ってプリンタ・オブジェクトを生成して、ルックアップの呼出し側がルックアップ後に直接プリンタ・オブジェクトで操作できるようになります。

ObjectFactoryは、特定の型のオブジェクトの作成を担当します。 上記の例では、Printerオブジェクトの生成にPrinterObjectFactoryを使うことができます。

オブジェクト・ファクトリはObjectFactoryインタフェースを実装する必要があります。 またファクトリ・クラスはpublicであることが必要で、かつパラメータを取れないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュールにある場合は、そのモジュールがjava.namingモジュールにエクスポートするパッケージ内にある必要があります。

オブジェクト・ファクトリのgetObjectInstance()メソッドは、異なるパラメータを使って複数回呼び出されることがあります。 実装はスレッド・セーフです。

このクラスのドキュメントのURLの記載は、RFC 1738およびその関連RFCで定義されているURL文字列を指しています。 それは、そこで記述されている構文規則に準拠する任意の文字列であり、対応するサポートがjava.net.URLクラスまたはWebブラウザに必ずあるとは限りません。

導入されたバージョン:
1.3
関連項目:
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)
    指定された位置情報または参照情報を使って、オブジェクトを生成します。
  • メソッドの詳細

    • getObjectInstance

      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()メソッドは、次の規則に従います。

      1. 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を解決できるコンテキストが返されます。
      2. 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など)を解決できます。
      3. objがURL文字列の配列である場合、URLは、それらが参照するコンテキストという点で同等であると仮定します。 URLが等しいこと、または等しい必要があることの確認はコンテキスト・ファクトリに任されています。 URLの配列内の順序は重要ではありません。 getObjectInstance()が返すオブジェクトは、単一のURLの場合と同じです。 これは、URLによって指定されたオブジェクトです。
      4. 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 - オブジェクトの生成中にこのオブジェクト・ファクトリが例外を検出し、ほかのオブジェクト・ファクトリが試行されない場合。
      関連項目:
      NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>), NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)