|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.sql.rowset.spi.SyncFactory
public class SyncFactory
未接続の RowSet オブジェクトによって使用される SyncProvider インスタンスを生成するサービスプロバイダインタフェース (Service Provider Interface、SPI) 機構です。SyncProviderインスタンスは、RowSetオブジェクトが自身にデータを移植するために必要な javax.sql.RowSetReaderオブジェクトと、変更されたデータを配下のデータソースに渡すために必要な javax.sql.RowSetWriterオブジェクトを提供します。
SyncFactory クラスのメソッドはすべて static なので、Java VMごとに同時に複数の SyncFactory オブジェクトが存在することはできません。このため、RowSet実装は、常に単一のソースから SyncProvider 実装を取得することになります。
SyncFactoryクラスは、使用可能な同期プロバイダ実装 (SyncProviderオブジェクト)の内部レジストリを提供します。このレジストリを照会することで、使用可能な同期プロバイダを確認できます。次に示すのは、現在登録されているプロバイダを列挙するコードです。
java.util.Enumeration e = SyncFactory.getRegisteredProviders();
すべての標準 RowSet実装は、少なくとも次の 2 つのプロバイダを提供する必要があります。
CachedRowSet 実装またはこの実装から派生した実装用の最適のプロバイダ
WebRowSet オブジェクトなど)
SyncProvider実装 RIOptimisticProviderおよび RIXmlProviderが含まれる点に注意してください。
SyncFactory クラスは、アプリケーションが現在 SyncFactoryに登録されている同期プロバイダを確認するために役立つアクセス用メソッドを提供します。
その他のメソッドには、RowSet持続プロバイダをファクトリ機構に登録したり、登録を解除したりする働きがあります。このため、RowSetオブジェクトは、実行時にその他の同期プロバイダ実装も使用することができます。
アプリケーションは、フィルタリングの段階を適用することで、SyncProvider実装が提供する同期のレベルを確定できます。RowSetオブジェクトがプロバイダを使用できるかどうかは、次の基準で決定されます。
RowSet オブジェクトによって指定された特定のプロバイダの参照が、SyncFactoryに含まれない場合、同期プロバイダが見つからないことを示す SyncFactoryException がスローされる
RowSet実装が登録済みの特定のプロバイダによってインスタンス化される場合、要求されたプロバイダが提供される。そうでない場合は SyncFactoryExceptionがスローされる
RowSet オブジェクトが SyncProvider実装を指定せず、そのほかに利用可能な SyncProvider実装が存在しない場合、リファレンス実装プロバイダが提供される
SyncProvider 実装の登録
ベンダーも開発者も、次のいずれかの機構を使って SyncProvider 実装を登録できます。
-Drowset.provider.classname=com.fred.providers.HighAvailabilityProvider
#Default JDBC RowSet sync providers listing # # Optimistic synchronization provider rowset.provider.classname.0=com.sun.rowset.providers.RIOptimisticProvider rowset.provider.vendor.0=Sun Microsystems Inc rowset.provider.version.0=1.0 # XML Provider using standard XML schema rowset.provider.classname.1=com.sun.rowset.providers.RIXMLProvider rowset.provider.vendor.1=Sun Microsystems Inc. rowset.provider.version.1=1.0
SyncFactory は、このファイルをチェックし、そこに含まれる SyncProvider実装を登録します。開発者やベンダーは、このファイルにその他の実装を追加できます。次に例を示します。
rowset.provider.classname.2=com.fred.providers.HighAvailabilityProvider
rowset.provider.vendor.2=Fred, Inc.
rowset.provider.version.2=1.0
SyncFactory は、この JNDIコンテキストから SyncProvider 実装をロードしようとします。たとえば、次に、JNDIコンテキストにプロバイダ実装を 1 つ登録するコードの抜粋を示します。通常、この処理はデプロイヤが行います。 この例では、J2EEリソースによって使用される CosNaming ネームスペースに、MyProvider が登録されます。
import javax.naming.*;
Hashtable svrEnv = new Hashtable();
srvEnv.put(Context.INITIAL_CONTEXT_FACTORY, "CosNaming");
Context ctx = new InitialContext(svrEnv);
com.fred.providers.MyProvider = new MyProvider();
ctx.rebind("providers/MyProvider", syncProvider);
SyncFactoryインスタンスに登録されます。これにより、SyncFactoryは、JNDI コンテキスト内をブラウズして、SyncProvider実装を検索できるようになります。
Hashtable appEnv = new Hashtable();
appEnv.put(Context.INITIAL_CONTEXT_FACTORY, "CosNaming");
appEnv.put(Context.PROVIDER_URL, "iiop://hostname/providers");
Context ctx = new InitialContext(appEnv);
SyncFactory.registerJNDIContext(ctx);
RowSetオブジェクトが MyProviderオブジェクトの取得を試みる場合、SyncFactoryはこれを検出しようとします。最初にシステムプロパティー内を検索し、次にリソースファイル内を検索し、最終的には設定されている JNDIコンテキストをチェックします。SyncFactoryインスタンスは、要求されたプロバイダが SyncProvider abstract クラスの有効な拡張であることを確認して、RowSetオブジェクトに渡します。次のコードの抜粋では、新しい CachedRowSetオブジェクトを作成し、MyProviderのバインディングを含む envで初期化します。
Hashtable env = new Hashtable();
env.put(SyncFactory.ROWSET_SYNC_PROVIDER, "com.fred.providers.MyProvider");
CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl(env);
これらの機構の詳細については、javax.sql.rowset.spiパッケージの仕様を参照してください。
SyncProvider,
SyncFactoryException| フィールドの概要 | |
|---|---|
static String |
ROWSET_SYNC_PROVIDER
同期プロバイダの実装名を表す標準プロパティー ID です。 |
static String |
ROWSET_SYNC_PROVIDER_VERSION
同期プロバイダの実装のバージョンタグを表す標準プロパティー ID です。 |
static String |
ROWSET_SYNC_VENDOR
同期プロバイダの実装のベンダー名を表す標準プロパティー ID です。 |
| メソッドの概要 | |
|---|---|
static SyncProvider |
getInstance(String providerID)
providerID で識別される SyncProvider インスタンスを返します。 |
static Logger |
getLogger()
アプリケーションが SyncProvider 実装によって表示された同期イベントを取得するために必要なログオブジェクトを返します。 |
static Enumeration<SyncProvider> |
getRegisteredProviders()
現在登録されている同期プロバイダを列挙します。 |
static SyncFactory |
getSyncFactory()
SyncFactory シングルトンを返します。 |
static void |
registerProvider(String providerID)
指定された同期プロバイダをファクトリレジスタへ追加します。 |
static void |
setJNDIContext(Context ctx)
JNDI 名前空間から SyncProvider 実装を取得する初期 JNDI コンテキストを設定します。 |
static void |
setLogger(Logger logger)
SyncFactory が提供する SyncProvider 実装によって使用されるログオブジェクトを設定します。 |
static void |
setLogger(Logger logger,
Level level)
SyncFactory SPI が提供する SyncProvider 実装によって使用されるログオブジェクトを設定します。 |
static void |
unregisterProvider(String providerID)
現在登録されている指定の同期プロバイダをファクトリ SPI レジスタから削除します。 |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
|---|
public static String ROWSET_SYNC_PROVIDER
public static String ROWSET_SYNC_VENDOR
public static String ROWSET_SYNC_PROVIDER_VERSION
| メソッドの詳細 |
|---|
public static void registerProvider(String providerID)
throws SyncFactoryException
SyncProvider仕様を参照してください。
JNDI コンテキストにバインドされた同期プロバイダを登録するには、SyncProvider インスタンスを JNDI名前空間にバインドします。
SyncProvider p = new MySyncProvider();
InitialContext ic = new InitialContext();
ic.bind ("jdbc/rowset/MySyncProvider", p);
さらに、JNDI コンテキストは、setJNDIContextメソッドにより SyncFactoryに初期設定されます。SyncFactoryは、このコンテキストを利用して、JNDIコンテキストとその子ノードにバインドされた使用可能な SyncProviderオブジェクトを検索します。
providerID - 登録される同期プロバイダの 一意の ID を持つ String オブジェクト
SyncFactoryException - 空または null のプロバイダ名を返す 処理が試行された場合setJNDIContext(javax.naming.Context)public static SyncFactory getSyncFactory()
SyncFactory シングルトンを返します。
SyncFactory インスタンス
public static void unregisterProvider(String providerID)
throws SyncFactoryException
providerID - 同期プロバイダの一意の ID
SyncFactoryException - 未登録の SyncProvider 実装の登録を解除する 処理が試行された場合
public static SyncProvider getInstance(String providerID)
throws SyncFactoryException
SyncProvider インスタンスを返します。
providerID - 一意のプロバイダ識別子
SyncProvider 実装
SyncFactoryException - SyncProvider が見つからない場合、 またはこのプロバイダの呼び出し時に何らかのエラーが発生した場合
public static Enumeration<SyncProvider> getRegisteredProviders()
throws SyncFactoryException
SyncProviderオブジェクトとして使用できます。
最小限、JDBC ドライバを使って RowSet コンテンツデータを格納できるようにする参照同期プロバイダを使用できます。 列挙。
SyncFactoryExceptionpublic static void setLogger(Logger logger)
SyncFactory が提供する SyncProvider 実装によって使用されるログオブジェクトを設定します。すべての SyncProvider実装は、このオブジェクトにイベントを記録できます。 アプリケーションは、getLoggerメソッドを使ってこのオブジェクトのハンドルを取得できます。
logger - Logger オブジェクトインスタンス
public static void setLogger(Logger logger,
Level level)
SyncFactory SPI が提供する SyncProvider 実装によって使用されるログオブジェクトを設定します。すべての SyncProvider実装は、このオブジェクトにイベントを記録できます。 アプリケーションは、getLoggerメソッドを使ってこのオブジェクトのハンドルを取得できます。
logger - Logger オブジェクトインスタンスlevel - 必要なログの段階を示す Level オブジェクト インスタンス
public static Logger getLogger()
throws SyncFactoryException
SyncFactoryException - ログオブジェクトが設定されていない場合
public static void setJNDIContext(Context ctx)
throws SyncFactoryException
ctx - 有効な JNDI コンテキスト
SyncFactoryException - 指定された JNDI コンテキストが null の場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。