Класс SyncFactory
public class SyncFactory extends Object
SyncProvider для использования отключёнными объектами RowSet. Экземпляры SyncProvider, в свою очередь, предоставляют объекту javax.sql.RowSetReader объект RowSet, необходимый для заполнения данными, и объект javax.sql.RowSetWriter, необходимый для передачи изменений данных обратно в базовый источник данных. Поскольку все методы класса SyncFactory являются статическими, в любой момент времени в виртуальной машине Java имеется только один объект SyncFactory. Это гарантирует, что реализация 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
Поставщики и разработчики могут регистрировать реализации 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, предоставленными SPI SyncFactory. |
static void |
unregisterProvider |
Удаляет указанный зарегистрированный в данный момент поставщик синхронизации из реестра SPI фабрики. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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.
- Возвращает:
- Enumeration — перечисление доступных поставщиков синхронизации, зарегистрированных в этой фабрике
- Выбрасывает:
-
SyncFactoryException— если при получении зарегистрированных поставщиков возникает ошибка
setLogger
public static void setLogger(Logger logger)
SyncProvider, предоставленной SyncFactory. Все реализации SyncProvider могут записывать свои события в этот объект, а приложение может получить ссылку на него с помощью метода getLogger.- Параметры:
-
logger— экземпляр объекта Logger - Выбрасывает:
-
NullPointerException— если средство ведения журнала имеет значение null
setLogger
public static void setLogger(Logger logger, Level level)
SyncProvider, предоставленными SPI SyncFactory. Все реализации SyncProvider могут записывать свои события в этот объект, а приложение может получить ссылку на него с помощью метода getLogger.- Параметры:
-
logger— экземпляр объекта Logger -
level— экземпляр объекта Level, указывающий требуемый уровень ведения журнала - Выбрасывает:
-
NullPointerException— если средство ведения журнала имеет значение 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.