public class SyncFactory extends Object
SyncProvider实例被断开
RowSet对象使用。反过来,
SyncProvider实例提供的
RowSet对象需要的数据和需要更改传播到其数据恢复到基础数据源的
javax.sql.RowSetWriter对象填充本身的
javax.sql.RowSetReader对象。
因为在SyncFactory类的方法都是静态的,在任何一个时间有每个java虚拟机只有一个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 classname = com.fred.providers.highavailabilityprovider。供应商。
#默认JDBC RowSet同步提供商的列表##乐观同步提供者行集。供应商。0 = com.sun.rowset.providers.rioptimisticprovider类名。行集。供应商。供应商。0 =甲骨文公司行集。供应商。版本0 = 1。# XML提供程序使用标准的XML Schema行集。供应商。1 = com.sun.rowset.providers.rixmlprovider类名。行集。供应商。供应商。1 =甲骨文公司行集。供应商。版本1 = 1。的
SyncFactory检查该文件和寄存器实现,它包含SyncProvider。一个开发人员或供应商可以在该文件中添加其他实现。例如,这里是一个可能的加法:行集。供应商。2 = com.fred.providers.highavailabilityprovider类名。行集。供应商。供应商。2 =弗莱德,Inc.行集。供应商。版本2 = 1。
SyncFactory将试图从JNDI环境负荷SyncProvider实现。例如,下面的代码段寄存器提供者实现JNDI上下文。这是一个“通常会做的。在这个例子中,MyProvider是在cosnaming命名空间注册,这是由J2EE资源命名空间。进口javax.命名。*;哈希表svrenv =新hashtable();srvenv。把(context.initial_context_factory,“形式”);CTX =新上下文InitialContext(svrenv);com.fred.providers.myprovider =新myprovider();CTX。绑定(“供应商/使用恶意应用程序来查询”,syncprovider);
SyncFactory实例登记JNDI上下文。这让
SyncFactory浏览在JNDI上下文寻找
SyncProvider实现。
哈希表appenv =新hashtable();appenv。把(context.initial_context_factory,“形式”);appenv。把(context.provider_url,“IIOP:/ /主机/供应商”);CTX =新上下文InitialContext(appenv);syncfactory registerjndicontext(CTX);如果
RowSet对象试图获得一个
MyProvider对象的
SyncFactory将试图找到它。首先,搜索它在系统属性,然后在资源文件的样子,最后检查JNDI上下文已设置。的
SyncFactory实例验证要求的供应商是一个有效的延长的
SyncProvider抽象类,然后给它的
RowSet对象。下面的代码片段中,一个新的
CachedRowSet对象被创建并初始化环境,其中包含
MyProvider结合。
Hashtable env =新hashtable();环境。把(syncfactory.rowset_sync_provider,“com。弗莱德。商MyProvider”。);CachedRowSet CRS =新的COM。太阳。行集。CachedRowSetImpl(env);进一步的细节,这些机制在
javax.sql.rowset.spi包装规格可供选择。
SyncProvider,
SyncFactoryException
| Modifier and Type | Field and Description |
|---|---|
static String |
ROWSET_SYNC_PROVIDER
用于同步提供程序实现名称的标准属性标识。
|
static String |
ROWSET_SYNC_PROVIDER_VERSION
用于同步提供程序实现版本标签的标准属性标识。
|
static String |
ROWSET_SYNC_VENDOR
用于同步提供程序实现的供应商名称的标准属性标识。
|
| Modifier and Type | Method and Description |
|---|---|
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)
设置日志对象,通过
SyncProvider实现由
SyncFactory SPI提供使用。
|
static void |
unregisterProvider(String providerID)
删除指定的当前注册商从工厂同步SPI登记。
|
public static final String ROWSET_SYNC_PROVIDER
public static final String ROWSET_SYNC_VENDOR
public static final 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上下文应设置与使用方法
SyncFactory
setJNDIContext。利用这方面的
SyncFactory搜索可用的
SyncProvider对象绑定到JNDI上下文和它的子节点。
providerID——与同步提供商注册的唯一ID
String对象
SyncFactoryException -如果试图提供一个空的提供程序名称
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无法找到的providerid是
null,或一些错误时遇到试图调用该提供程序。
public static Enumeration<SyncProvider> getRegisteredProviders() throws SyncFactoryException
RowSet实现可以使用枚举中的任何供应商的
SyncProvider对象。
至少,参考同步提供者允许数据集内容的数据存储使用JDBC驱动程序应该是可能的。
SyncFactoryException -如果出现错误获得注册商
public static void setLogger(Logger logger)
SyncFactory提供
SyncProvider实现日志记录对象。所有的
SyncProvider实现事件记录到该对象和应用程序可以检索处理该对象使用
getLogger方法。
这种方法检查发现有一个SQLPermission对象授予的权限setSyncFactory才允许方法成功。如果一个SecurityManager存在,checkPermission方法调用setLogger否认,该方法抛出一个java.lang.SecurityException。
logger -记录器对象实例
SecurityException -如果存在一个安全管理及其
checkPermission方法调用
setLogger否认
NullPointerException如果记录是零
SecurityManager.checkPermission(java.security.Permission)
public static void setLogger(Logger logger, Level level)
SyncProvider实现由
SyncFactory SPI提供使用。所有的
SyncProvider实现事件记录到该对象和应用程序可以检索处理该对象使用
getLogger方法。
这种方法检查发现有一个SQLPermission对象授予的权限setSyncFactory才允许方法成功。如果一个SecurityManager存在,checkPermission方法调用setLogger否认,该方法抛出一个java.lang.SecurityException。
logger -记录器对象实例
level -一级对象实例说明测井需要的程度
SecurityException -如果存在一个安全管理及其
checkPermission方法调用
setLogger否认
NullPointerException如果记录是零
SecurityManager.checkPermission(java.security.Permission),
LoggingPermission
public static Logger getLogger() throws SyncFactoryException
Logger已使用的
SyncProvider实现指定
SyncFactoryException -如果没有记录对象已定。
public static void setJNDIContext(Context ctx) throws SyncFactoryException
这种方法检查发现有一个SQLPermission对象授予的权限setSyncFactory才允许方法成功。如果一个SecurityManager存在,checkPermission方法调用setJNDIContext否认,该方法抛出一个java.lang.SecurityException。
ctx JNDI上下文
SyncFactoryException -如果提供的JNDI上下文是空的
SecurityException -如果存在一个安全管理及其
checkPermission方法调用
setJNDIContext否认
SecurityManager.checkPermission(java.security.Permission)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.