Класс SyncFactory
public class SyncFactory extends Object
SyncProvider экземпляры, которые используются объектами RowSet, работающими в режиме отключения от источника данных. Экземпляры SyncProvider в свою очередь предоставляют объекту javax.sql.RowSetReader объект RowSet, необходимый для заполнения данных, и объект javax.sql.RowSetWriter, необходимый для распространения изменений данных обратно в исходный источник данных. Поскольку методы класса SyncFactory являются статическими, существует только один объект SyncFactory на одну Java-машину виртуальную. Это гарантирует, что реализация RowSet может получить свою реализацию объекта SyncProvider из единого источника.
1.0 Обзор
КлассSyncFactory предоставляет внутренний реестр доступных реализаций поставщиков синхронизации (объекты SyncProvider). Этот реестр можно запросить для определения доступных поставщиков синхронизации. Следующая строка кода получает перечисление текущих зарегистрированных поставщиков.
java.util.Enumeration e = SyncFactory.getRegisteredProviders();
Все стандартные реализации RowSet должны предоставлять как минимум двух поставщиков: - оптимистичный поставщик для использования с реализацией
CachedRowSetили с реализацией, производной от нее - поставщик XML, который используется для чтения и записи XML, например, с объектами
WebRowSet
SyncProvider, RIOptimisticProvider и RIXmlProvider, которые удовлетворяют этому требованию. Класс SyncFactory предоставляет методы доступа, чтобы помочь приложениям определить, какие поставщики синхронизации в настоящее время зарегистрированы в SyncFactory.
Другие методы позволяют регистрировать или дерегистрировать поставщиков персистентности RowSet в механизме фабрики. Это позволяет сделать дополнительные реализации поставщиков синхронизации доступными для объектов RowSet во время выполнения.
Приложения могут применять некоторую фильтрацию для определения уровня синхронизации, который предоставляет реализация SyncProvider. Следующие критерии определяют, доступен ли поставщик объекту RowSet:
- Если конкретный поставщик указан объектом
RowSet, иSyncFactoryне содержит ссылки на этого поставщика, будет брошено исключениеSyncFactoryException, указывающее, что поставщик синхронизации не найден. - Если реализация
RowSetинициализируется с указанным поставщиком, и указанный поставщик должным образом зарегистрирован, запрашиваемый поставщик предоставляется. В противном случае будет брошено исключениеSyncFactoryException. - Если объект
RowSetне указывает реализациюSyncProviderи нет дополнительных реализацийSyncProvider, предоставляются поставщики реализации по умолчанию.
2.0 Регистрация реализаций поставщиков синхронизации
Как поставщики, так и разработчики могут регистрировать реализации SyncProvider, используя один из следующих механизмов.
-
Использование командной строки
Имя поставщика предоставляется в командной строке, что добавит поставщика в системные свойства. Например:-Drowset.provider.classname=com.fred.providers.HighAvailabilityProvider -
Использование стандартного файла свойств
Реализация по умолчанию предназначена для поставки с J2SE 1.5, которая будет включать дополнительный файл ресурсов, который можно изменить вручную. Вот пример файла свойств, включенного в реализацию по умолчанию:#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.0
КлассSyncFactoryпроверяет этот файл и регистрирует содержащиеся в нем реализацииSyncProvider. Разработчик или поставщик могут добавить другие реализации в этот файл. Например, вот возможная добавка:rowset.provider.classname.2=com.fred.providers.HighAvailabilityProvider rowset.provider.vendor.2=Fred, Inc. rowset.provider.version.2=1.0 -
Использование контекста JNDI
Доступные поставщики могут быть зарегистрированы в контексте JNDI, иSyncFactoryпопытается загрузить реализацииSyncProviderиз этого контекста JNDI. Например, следующий фрагмент кода регистрирует реализацию поставщика в контексте 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. Это позволяет 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 и инициализируется со значением env, содержащим привязку к 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.- С момента:
- 1.5
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
ROWSET_SYNC_PROVIDER |
Стандартный идентификатор свойства для имени реализации поставщика синхронизации. |
static final String |
ROWSET_SYNC_PROVIDER_VERSION |
Стандартный идентификатор свойства для метки версии реализации поставщика синхронизации. |
static final String |
ROWSET_SYNC_VENDOR |
Стандартный идентификатор свойства для имени поставщика реализации поставщика синхронизации. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static SyncProvider |
getInstance |
Возвращает экземпляр SyncProvider, идентифицированный по providerID. |
static Logger |
getLogger() |
Возвращает объект логирования для приложений, чтобы получать события синхронизации, размещенные реализациями SyncProvider. |
static Enumeration |
getRegisteredProviders() |
Возвращает перечисление текущих зарегистрированных поставщиков синхронизации. |
static SyncFactory |
getSyncFactory() |
Возвращает единственный экземпляр SyncFactory. |
static void |
registerProvider |
Добавляет данный поставщик синхронизации в реестр фабрики. |
static void |
setJNDIContext |
Устанавливает начальный контекст JNDI, из которого можно получить реализации SyncProvider из пространства имен JNDI |
static void |
setLogger |
Устанавливает объект логирования, который будет использоваться реализацией SyncProvider, предоставляемой классом SyncFactory. |
static void |
setLogger |
Устанавливает объект логирования, используемый реализациями SyncProvider, предоставляемыми интерфейсом SyncFactory SPI. |
static void |
unregisterProvider |
Удаляет выделенного, текущего зарегистрированного поставщика синхронизации из реестра SPI фабрики. |
Подробное описание полей
ROWSET_SYNC_PROVIDER
public static final String ROWSET_SYNC_PROVIDER
- См. также:
ROWSET_SYNC_VENDOR
public static final String ROWSET_SYNC_VENDOR
- См. также:
ROWSET_SYNC_PROVIDER_VERSION
public static final String ROWSET_SYNC_PROVIDER_VERSION
- См. также:
Подробное описание методов
registerProvider
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- ОбъектStringс уникальным идентификатором регистрируемого поставщика синхронизации - Исключения:
-
SyncFactoryException- если попытка предоставить пустое или null имя поставщика - См. также:
getSyncFactory
public static SyncFactory getSyncFactory()
SyncFactory.- Возвращает:
- экземпляр
SyncFactory
unregisterProvider
public static void unregisterProvider(String providerID) throws SyncFactoryException
- Параметры:
-
providerID- Уникальный идентификатор поставщика синхронизации - Исключения:
-
SyncFactoryException- Если попытка отменить регистрацию реализации SyncProvider, которая не была зарегистрирована.
getInstance
public static SyncProvider getInstance(String providerID) throws SyncFactoryException
SyncProvider, идентифицируемый по providerID.- Параметры:
-
providerID- уникальный идентификатор поставщика - Возвращает:
- реализация
SyncProvider - Исключения:
-
SyncFactoryException- Если SyncProvider не найден, providerID являетсяnullили при попытке вызова этого поставщика произошла ошибка.
getRegisteredProviders
public static Enumeration<SyncProvider> getRegisteredProviders() throws SyncFactoryException
RowSet может использовать любого поставщика в перечислении как свой объект SyncProvider. Как минимум, должен быть доступен эталонный поставщик синхронизации, позволяющий хранить данные содержимого RowSet с помощью драйвера JDBC.
- Возвращает:
- Перечисление перечисление доступных зарегистрированных поставщиков синхронизации
- Исключения:
-
SyncFactoryException- Если при получении зарегистрированных поставщиков произошла ошибка
setLogger
public static void setLogger(Logger logger)
SyncProvider, предоставляемой реализацией SyncFactory. Все реализации SyncProvider могут регистрировать свои события в этот объект, и приложение может получить к нему доступ с помощью метода getLogger.- Параметры:
-
logger- Экземпляр объекта Logger - Исключения:
-
NullPointerException- если logger равен null
setLogger
public static void setLogger(Logger logger, Level level)
SyncProvider, предоставляемыми реализацией SyncFactory SPI. Все реализации SyncProvider могут регистрировать свои события в этот объект, и приложение может получить к нему доступ с помощью метода getLogger.- Параметры:
-
logger- Экземпляр объекта Logger -
level- Экземпляр объекта Level, указывающий требуемый уровень ведения журнала - Исключения:
-
NullPointerException- если logger равен null
getLogger
public static Logger getLogger() throws SyncFactoryException
- Возвращает:
Logger, заданный для использования реализациямиSyncProvider- Исключения:
-
SyncFactoryException- если объект ведения журнала не задан.
setJNDIContext
public static void setJNDIContext(Context ctx) throws SyncFactoryException
- Параметры:
-
ctx- действительный контекст JNDI - Исключения:
-
SyncFactoryException- если предоставленный контекст JNDI равен null
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.sql.rowset/javax/sql/rowset/spi/SyncFactory.html