public class SyncFactory extends Object
SyncProvider
 instances to be used by disconnected RowSet objects.
 The SyncProvider instances in turn provide the
 javax.sql.RowSetReader object the RowSet object
 needs to populate itself with data and the
 javax.sql.RowSetWriter object it needs to
 propagate changes to its
 data back to the underlying data source.
 
 Because the methods in the SyncFactory class are all static,
 there is only one SyncFactory object
 per Java VM at any one time. This ensures that there is a single source from which a
 RowSet implementation can obtain its SyncProvider
 implementation.
 
SyncFactory class provides an internal registry of available
 synchronization provider implementations (SyncProvider objects).
 This registry may be queried to determine which
 synchronization providers are available.
 The following line of code gets an enumeration of the providers currently registered.
 
     java.util.Enumeration e = SyncFactory.getRegisteredProviders();
 
 All standard RowSet implementations must provide at least two providers:
 CachedRowSet implementation
     or an implementation derived from it
  WebRowSet objects
 SyncProvider
 implemtations RIOptimisticProvider and RIXmlProvider,
 which satisfy this requirement.
 
 The SyncFactory class provides accessor methods to assist
 applications in determining which synchronization providers are currently
 registered with the SyncFactory.
 
 Other methods let RowSet persistence providers be
 registered or de-registered with the factory mechanism. This
 allows additional synchronization provider implementations to be made
 available to RowSet objects at run time.
 
 Applications can apply a degree of filtering to determine the level of
 synchronization that a SyncProvider implementation offers.
 The following criteria determine whether a provider is
 made available to a RowSet object:
 
RowSet object, and
 the SyncFactory does not contain a reference to this provider,
 a SyncFactoryException is thrown stating that the synchronization
 provider could not be found.
 
RowSet implementation is instantiated with a specified
 provider and the specified provider has been properly registered, the
 requested provider is supplied. Otherwise a SyncFactoryException
 is thrown.
 
RowSet object does not specify a
 SyncProvider implementation and no additional
 SyncProvider implementations are available, the reference
 implementation providers are supplied.
 SyncProvider Implementations
 Both vendors and developers can register SyncProvider
 implementations using one of the following mechanisms.
 
    -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=Oracle Corporation 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=Oracle Corporation rowset.provider.version.1=1.0The
SyncFactory checks this file and registers the
 SyncProvider implementations that it contains. A
 developer or vendor can add other implementations to this file.
 For example, here is a possible addition:
 
     rowset.provider.classname.2=com.fred.providers.HighAvailabilityProvider
     rowset.provider.vendor.2=Fred, Inc.
     rowset.provider.version.2=1.0
 
 
SyncFactory will attempt to load
 SyncProvider implementations from that JNDI context.
 For example, the following code fragment registers a provider implementation
 on a JNDI context.  This is something a deployer would normally do. In this
 example, MyProvider is being registered on a CosNaming
 namespace, which is the namespace used by J2EE resources.
 
    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 instance.  This allows the SyncFactory
 to browse within the JNDI context looking for SyncProvider
 implementations.
 
    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);
 
 If a RowSet object attempts to obtain a MyProvider
 object, the SyncFactory will try to locate it. First it searches
 for it in the system properties, then it looks in the resource files, and
 finally it checks the JNDI context that has been set. The SyncFactory
 instance verifies that the requested provider is a valid extension of the
 SyncProvider abstract class and then gives it to the
 RowSet object. In the following code fragment, a new
 CachedRowSet object is created and initialized with
 env, which contains the binding to MyProvider.
 
    Hashtable env = new Hashtable();
    env.put(SyncFactory.ROWSET_SYNC_PROVIDER, "com.fred.providers.MyProvider");
    CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl(env);
 
 Further details on these mechanisms are available in the
 javax.sql.rowset.spi package specification.SyncProvider, 
SyncFactoryException| Modifier and Type | Field and Description | 
|---|---|
| static String | ROWSET_SYNC_PROVIDERThe standard property-id for a synchronization provider implementation
 name. | 
| static String | ROWSET_SYNC_PROVIDER_VERSIONThe standard property-id for a synchronization provider implementation
 version tag. | 
| static String | ROWSET_SYNC_VENDORThe standard property-id for a synchronization provider implementation
 vendor name. | 
| Modifier and Type | Method and Description | 
|---|---|
| static SyncProvider | getInstance(String providerID)Returns the  SyncProviderinstance identified by providerID. | 
| static Logger | getLogger()Returns the logging object for applications to retrieve
 synchronization events posted by SyncProvider implementations. | 
| static Enumeration<SyncProvider> | getRegisteredProviders()Returns an Enumeration of currently registered synchronization
 providers. | 
| static SyncFactory | getSyncFactory()Returns the  SyncFactorysingleton. | 
| static void | registerProvider(String providerID)Adds the the given synchronization provider to the factory register. | 
| static void | setJNDIContext(Context ctx)Sets the initial JNDI context from which SyncProvider implementations
 can be retrieved from a JNDI namespace | 
| static void | setLogger(Logger logger)Sets the logging object to be used by the  SyncProviderimplementation provided by theSyncFactory. | 
| static void | setLogger(Logger logger,
         Level level)Sets the logging object that is used by  SyncProviderimplementations provided by theSyncFactorySPI. | 
| static void | unregisterProvider(String providerID)Removes the designated currently registered synchronization provider from the
 Factory SPI register. | 
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 specification for the
 required naming conventions for SyncProvider
 implementations.
 Synchronization providers bound to a JNDI context can be registered by binding a SyncProvider instance to a JNDI namespace.
 SyncProvider p = new MySyncProvider();
 InitialContext ic = new InitialContext();
 ic.bind ("jdbc/rowset/MySyncProvider", p);
 
 
 Furthermore, an initial JNDI context should be set with the
 SyncFactory using the setJNDIContext method.
 The SyncFactory leverages this context to search for
 available SyncProvider objects bound to the JNDI
 context and its child nodes.providerID - A String object with the unique ID of the
             synchronization provider being registeredSyncFactoryException - if an attempt is made to supply an empty
         or null provider namesetJNDIContext(javax.naming.Context)public static SyncFactory getSyncFactory()
SyncFactory singleton.SyncFactory instancepublic static void unregisterProvider(String providerID) throws SyncFactoryException
providerID - The unique-id of the synchronization providerSyncFactoryException - If an attempt is made to
 unregister a SyncProvider implementation that was not registered.public static SyncProvider getInstance(String providerID) throws SyncFactoryException
SyncProvider instance identified by providerID.providerID - the unique identifier of the providerSyncProvider implementationSyncFactoryException - If the SyncProvider cannot be found,
 the providerID is null, or
 some error was encountered when trying to invoke this provider.public static Enumeration<SyncProvider> getRegisteredProviders() throws SyncFactoryException
RowSet implementation may use any provider in
 the enumeration as its SyncProvider object.
 At a minimum, the reference synchronization provider allowing RowSet content data to be stored using a JDBC driver should be possible.
SyncFactoryExceptionpublic static void setLogger(Logger logger)
SyncProvider
 implementation provided by the SyncFactory. All
 SyncProvider implementations can log their events to
 this object and the application can retrieve a handle to this
 object using the getLogger method.
 
 This method checks to see that there is an SQLPermission
 object  which grants the permission setSyncFactory
 before allowing the method to succeed.  If a
 SecurityManager exists and its
 checkPermission method denies calling setLogger,
 this method throws a
 java.lang.SecurityException.
logger - A Logger object instanceSecurityException - if a security manager exists and its
   checkPermission method denies calling setLoggerNullPointerException - if the logger is nullSecurityManager.checkPermission(java.security.Permission)public static void setLogger(Logger logger, Level level)
SyncProvider
 implementations provided by the SyncFactory SPI. All
 SyncProvider implementations can log their events
 to this object and the application can retrieve a handle to this
 object using the getLogger method.
 
 This method checks to see that there is an SQLPermission
 object  which grants the permission setSyncFactory
 before allowing the method to succeed.  If a
 SecurityManager exists and its
 checkPermission method denies calling setLogger,
 this method throws a
 java.lang.SecurityException.
logger - a Logger object instancelevel - a Level object instance indicating the degree of logging
 requiredSecurityException - if a security manager exists and its
   checkPermission method denies calling setLoggerLoggingPermission - if a security manager exists and its
   checkPermission method denies calling setLevelNullPointerException - if the logger is nullSecurityManager.checkPermission(java.security.Permission), 
LoggingPermissionpublic static Logger getLogger() throws SyncFactoryException
SyncFactoryException - if no logging object has been set.public static void setJNDIContext(Context ctx) throws SyncFactoryException
  This method checks to see that there is an SQLPermission
 object  which grants the permission setSyncFactory
 before allowing the method to succeed.  If a
 SecurityManager exists and its
 checkPermission method denies calling setJNDIContext,
 this method throws a
 java.lang.SecurityException.
ctx - a valid JNDI contextSyncFactoryException - if the supplied JNDI context is nullSecurityException - if a security manager exists and its
  checkPermission method denies calling setJNDIContextSecurityManager.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, 2015, Oracle and/or its affiliates.  All rights reserved.