|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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抽
象クラスの有効な拡張であることを確認して、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)
SyncFactorySPI が提供する 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実装の必要とする命名規則のガイドライ
ンについては、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
RowSet実装は、列挙されたプロバイダのいずれかを SyncProviderオ
ブジェクトとして使用できます。
最小限、JDBC ドライバを使って RowSet コンテンツデータを格納できるようにする参照同期プロバイダを使用できます。
SyncFactoryExceptionpublic static void setLogger(Logger logger)
SyncFactoryが提供する SyncProvider実装によって使用されるログオ
ブジェクトを設定します。すべての SyncProvider実装は、このオブジェクトにイベントを記録できます。アプリ
ケーションは、getLoggerメソッドを使ってこのオブジェクトのハンドルを取得できます。
logger - Logger オブジェクトインスタンス
public static void setLogger(Logger logger,
Level level)
SyncFactorySPI が提供する 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 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。