|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.sql.rowset.spi.SyncFactory
public class SyncFactory
該服務提供者介面 (SPI) 機制可以產生由非連接 RowSet
物件使用的 SyncProvider
實例。SyncProvider
實例依次提供 javax.sql.RowSetReader
物件和 javax.sql.RowSetWriter
物件,RowSet
物件需要前者來使用資料填充本身,需要後者來將對其資料的更改傳播回底層資料源。
因為 SyncFactory
類別中的方法都是靜態的,所以每個 Java VM 在任意一個時刻內僅有一個 SyncFactory
物件。這能確保存在一個 RowSet
實作可以從中獲取其 SyncProvider
實作的單一源。
SyncFactory
類別提供可用同步提供者實作(SyncProvider
物件)的內部註冊表。可以查詢此註冊表以確定可用的同步提供者。以下的程式碼行可以獲取當前註冊的提供者所組成的列舉。
java.util.Enumeration e = SyncFactory.getRegisteredProviders();所有的標準
RowSet
實作必須至少提供兩個提供者:
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 上下文中註冊提供者實作。這是部署者通常都要執行的命令。在此範例中,MyProvider
在 CosNaming 名稱空間(它是 J2EE 資源使用的名稱空間)上註冊。
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
實例註冊 JNDI 上下文。這允許 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
物件。在以下程式碼片段中,使用 env 創建並初始化一個新的 CachedRowSet
物件,該物件包含對 MyProvider
的綁定。
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 上下文,通過該上下文可以從 JNDI 名稱空間獲取 SyncProvider 實作 |
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
規範中為 SyncProvider
實作所需的命名約定提供了指導方針。
通過將 SyncProvider 實例綁定到 JNDI 名稱空間可以註冊綁定到 JNDI 上下文的同步提供者。
SyncProvider p = new MySyncProvider(); InitialContext ic = new InitialContext(); ic.bind ("jdbc/rowset/MySyncProvider", p);另外,應通過
SyncFactory
使用 setJNDIContext
方法設置初始 JNDI 上下文。SyncFactory
利用此上下文搜尋綁定到 JNDI 上下文及其子節點的可用 SyncProvider
物件。
providerID
- 一個 String
物件,具有註冊的同步提供者的唯一 ID
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 內容資料的那個同步提供者。
SyncFactoryException
public 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
- 如果提供的 NDI 上下文為 null
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。