JavaTM Platform
Standard Ed. 6

javax.naming.spi
インタフェース StateFactory

既知のサブインタフェースの一覧:
DirStateFactory

public interface StateFactory

このインタフェースは、オブジェクトのバインディングの状態を取得するファクトリを表します。

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

ObjectFactory は特定の型のオブジェクト生成を行います。上記の例では、Printer オブジェクトの生成に PrinterObjectFactory が使用できます。

逆のプロセスでは、オブジェクトが名前空間にバインドされている場合、JNDI は「状態ファクトリ」を提供します。ここでもプリンタを例にとって、プリンタオブジェクトが更新され、再度バインドされる場合を考えます。

 ctx.rebind ("inky", printer) ;
 
ctx のサービスプロバイダは、状態ファクトリを使って printer の名前空間へのバインディングの状態を取得します。Printer タイプオブジェクトの状態ファクトリは、ネーミングシステムでの記憶のために、よりコンパクトなオブジェクトを返すことがあります。

状態ファクトリは StateFactory インタフェースを実装する必要があります。またファクトリクラスは public であることが必要で、かつパラメータを取れない public コンストラクタを持つ必要があります。

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

StateFactoryContext インタフェースだけを実装しているサービスプロバイダ対象です。DirStateFactoryDirContext インタフェースを実装しているサービスプロバイダ対象です。

導入されたバージョン:
1.3
関連項目:
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)
          オブジェクトのバインディングの状態を取得します。
 

メソッドの詳細

getStateToBind

Object getStateToBind(Object obj,
                      Name name,
                      Context nameCtx,
                      Hashtable<?,?> environment)
                      throws NamingException
オブジェクトのバインディングの状態を取得します。

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

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

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

name パラメータおよび environment パラメータは、呼び出し側が所有します。実装はこれらのオブジェクトを変更せず、そのオブジェクトに対する参照も保持しませんが、複製またはコピーに対する参照を保持することがあります。

パラメータ:
obj - 状態を取得する null 以外のオブジェクト
name - nameCtx に関連するこのオブジェクトの名前。 または、名前を指定しない場合は null
nameCtx - name パラメータの指定に関連するコンテキスト、 または name がデフォルトの初期コンテキストに 関連する場合は null
environment - null の可能性がある、オブジェクトの状態 の生成に使用される環境
戻り値:
オブジェクトのバインディングの状態。 ファクトリが何も変更を返さない場合は 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 Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。