Spec-Zone.ru › OpenJDK 25

Класс SyncFactory

java.lang.Object
javax.sql.rowset.spi.SyncFactory
public class SyncFactory extends Object
Механизм интерфейса поставщика служб (SPI), который создает экземпляры 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
Обратите внимание, что реализации JDBC RowSet включают реализации SyncProvider RIOptimisticProvider и RIXmlProvider, которые удовлетворяют этому требованию.

Класс SyncFactory предоставляет методы доступа, помогающие приложениям определить, какие поставщики синхронизации в данный момент зарегистрированы в SyncFactory.

Другие методы позволяют регистрировать и отменять регистрацию поставщиков сохранения RowSet с помощью фабричного механизма. Это позволяет сделать дополнительные реализации поставщиков синхронизации доступными объектам RowSet во время выполнения.

Приложения могут применять фильтрацию, чтобы определить уровень синхронизации, предлагаемый реализацией SyncProvider. Доступность поставщика для объекта RowSet определяется следующими критериями:

  1. Если объект RowSet указывает определенного поставщика, а SyncFactory не содержит ссылки на этого поставщика, возникает исключение SyncFactoryException с сообщением о том, что поставщик синхронизации не найден.
  2. Если экземпляр реализации RowSet создается с указанным поставщиком и этот поставщик зарегистрирован надлежащим образом, будет предоставлен запрошенный поставщик. В противном случае возникает исключение SyncFactoryException.
  3. Если объект 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);
    
Затем приложение зарегистрирует контекст JNDI в экземпляре 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
См. также:
  • SyncProvider
  • SyncFactoryException

Краткое описание полей

Модификатор и тип Поле Описание
static final String ROWSET_SYNC_PROVIDER
Стандартный идентификатор свойства для имени реализации поставщика синхронизации.
static final String ROWSET_SYNC_PROVIDER_VERSION
Стандартный идентификатор свойства для тега версии реализации поставщика синхронизации.
static final String ROWSET_SYNC_VENDOR
Стандартный идентификатор свойства для имени поставщика реализации поставщика синхронизации.

Краткое описание методов

Модификатор и тип Метод Описание
static SyncProvider getInstance(String providerID)
Возвращает экземпляр SyncProvider, идентифицируемый значением providerID.
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)
Задает объект ведения журнала, используемый реализацией SyncProvider, предоставляемой SyncFactory.
static void setLogger(Logger logger, Level level)
Задает объект ведения журнала, используемый реализациями SyncProvider, предоставляемыми SPI SyncFactory.
static void unregisterProvider(String providerID)
Удаляет указанный зарегистрированный поставщик синхронизации из реестра SPI фабрики.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

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);
 
Кроме того, с помощью метода setJNDIContext следует задать исходный контекст JNDI через SyncFactory. SyncFactory использует этот контекст для поиска доступных объектов SyncProvider, привязанных к контексту JNDI и его дочерним узлам.
Параметры:
providerID — объект String с уникальным идентификатором регистрируемого поставщика синхронизации
Вызывает исключение:
SyncFactoryException — если передано пустое или нулевое имя поставщика
См. также:
  • setJNDIContext(Context)

getSyncFactory

public static SyncFactory getSyncFactory()
Возвращает синглтон SyncFactory.
Возвращает:
экземпляр SyncFactory

unregisterProvider

public static void unregisterProvider(String providerID) throws SyncFactoryException
Удаляет указанный зарегистрированный поставщик синхронизации из реестра SPI фабрики.
Параметры:
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
Возвращает объект ведения журнала, с помощью которого приложения могут получать события синхронизации, публикуемые реализациями SyncProvider.
Возвращает:
объект Logger, заданный для использования реализациями SyncProvider
Вызывает исключение:
SyncFactoryException — если объект ведения журнала не задан.

setJNDIContext

public static void setJNDIContext(Context ctx) throws SyncFactoryException
Задает исходный контекст JNDI, из которого реализации SyncProvider могут извлекаться из пространства имен JNDI
Параметры:
ctx — допустимый контекст JNDI
Вызывает исключение:
SyncFactoryException — если переданный контекст JNDI равен null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.sql.rowset/javax/sql/rowset/spi/SyncFactory.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API