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

インタフェースDirStateFactory

すべてのスーパー・インタフェース:
StateFactory

public interface DirStateFactory
extends StateFactory
このインタフェースは、オブジェクトと該当属性とのバインディングの状態を取得するファクトリを表します。

JNDIフレームワークでは、オブジェクト・ファクトリを使用してオブジェクト実装を動的にロードできます。

DirStateFactoryStateFactoryを拡張して、getStateToBind()メソッドがAttributesインスタンスを指定して返すことができるようします。 DirStateFactory実装はDirContextサービス・プロバイダが使用するものです。 呼出し側がDirContext.bind()を使ってオブジェクトをバインドするとき、属性のセットもそのオブジェクトにバインドされるよう指定できます。 バインドされるオブジェクトと属性は、ファクトリのgetStateToBind()メソッドに渡されます。 ファクトリは、オブジェクトと属性を処理する場合はバインドされるオブジェクトと属性の該当ペアを返します。 オブジェクトを処理しない場合、ファクトリはnullを返す必要があります。

たとえば、呼出し側がプリンタ・オブジェクトをプリンタ関連の属性とバインドすることがあります。

 ctx.rebind("inky", printer, printerAttrs);
ctxのLDAPサービス・プロバイダは(DirectoryManager.getStateToBind()を使って間接的に) DirStateFactoryを使用して、DirStateFactoryにprinterおよびprinterAttrsを指定します。 LDAPディレクトリのファクトリはprinterを属性のセットに変え、それをprinterAttrsとマージします。 続いてサービス・プロバイダがその属性を使ってLDAPエントリを生成し、ディレクトリを更新します。

DirStateFactoryStateFactoryを拡張するので、2つのgetStateToBind()メソッドを持ちます。この2つのメソッドは属性引数が異なります。 DirectoryManager.getStateToBind()は属性引数を受け入れる形式のみを使用し、NamingManager.getStateToBind()は属性引数を受け入れない形式のみを使用します。

DirStateFactoryのgetStateToBind()メソッドのどちらかの形式が、異なるパラメータを使って複数回呼び出されることがあります。 実装はスレッド・セーフです。

導入されたバージョン:
1.3
関連項目:
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes), DirObjectFactory
  • ネストされたクラスのサマリー

    ネストされたクラス 
    修飾子と型 インタフェース 説明
    static class  DirStateFactory.Result
    DirStateFactory.getStateToBind()の結果を返す、オブジェクトと属性のペアです。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    DirStateFactory.Result getStateToBind​(Object obj, Name name, Context nameCtx, Hashtable<?,​?> environment, Attributes inAttrs)
    変換対象のオブジェクトおよび属性を、バインディングするためにオブジェクトの状態を取得します。

    インタフェース javax.naming.spi.StateFactoryで宣言されたメソッド

    getStateToBind
  • メソッドの詳細

    • getStateToBind

      DirStateFactory.Result getStateToBind​(Object obj, Name name, Context nameCtx, Hashtable<?,​?> environment, Attributes inAttrs) throws NamingException
      変換対象のオブジェクトおよび属性を、バインディングするためにオブジェクトの状態を取得します。

      DirectoryManager.getStateToBind()は、状態ファクトリに連続的にロードします。 ファクトリがDirStateFactoryを実装していれば、DirectoryManagerはこのメソッドを呼び出します。そうでない場合はStateFactory.getStateToBind()を呼び出します。 これは、ファクトリがnull以外の答えを生成するまで行われます。

      ファクトリが例外をスローすると、その例外はDirectoryManager.getStateToBind()の呼出し側に渡されます。 null以外の答えを生成する可能性のあるほかのファクトリの検索は停止します。 ファクトリは、それが目的の唯一のファクトリであり、ほかのファクトリを検索する必要がないことが確実な場合にのみ、例外をスローするようにします。 このファクトリが指定された引数でオブジェクトを生成できない場合は、nullを返します。

      作成されるオブジェクトの名前を指定するために、必要に応じてnameパラメータやnameCtxパラメータを使用できます。 詳細は、ObjectFactory.getObjectInstance()にある「名前パラメータとコンテキスト・パラメータ」の説明を参照してください。 コンテキスト実装はスレッド・セーフであることが保証されないため、nameCtxを使用する場合、ファクトリはその使用を並行アクセスに対して同期化するようにします。

      nameinAttrs、およびenvironmentの各パラメータは、呼出し側が所有します。 実装はこれらのオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、複製またはコピーに対する参照を保持することがあります。 このメソッドが返すオブジェクトは呼出し側が所有します。 実装は続いてこれを変更しません。 実装には、呼出し側が所有するのと同じ新しいAttributesオブジェクトか、あるいは元のinAttrsパラメータへの参照が含まれます。

      パラメータ:
      obj - 状態を取得する、nullの可能性があるオブジェクト。
      name - nameCtxを基準にしたこのオブジェクトの名前、または名前が指定されていない場合はnull。
      nameCtx - nameパラメータが基準にして指定されているコンテキスト、またはnameがデフォルトの初期コンテキストを基準にしている場合はnull。
      environment - オブジェクトの状態の作成で使用されるnullの可能性がある環境。
      inAttrs - オブジェクトにバインドされる、nullの可能性がある属性。 ファクトリはinAttrsを変更できない。
      戻り値:
      オブジェクトのバインディングの状態およびバインドされる該当の属性を含むResultオブジェクトがこのファクトリを使用しない場合はnull。
      例外:
      NamingException - オブジェクトの状態を取得しようとしているときにこのファクトリが例外を検出し、ほかのファクトリが試行されない場合。
      関連項目:
      DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)