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.