Spec-Zone.ru › OpenJDK 17

Класс 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 статические, существует только один объект SyncFactory на одну виртуальную машину Java в любой момент времени. Это гарантирует, что существует единственный источник, из которого реализация 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.
Since:
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.

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

Возвращает:
Перечисление Перечисление доступных зарегистрированных поставщиков синхронизации
Исключения:
SyncFactoryException - Если произошла ошибка при получении зарегистрированных поставщиков

setLogger

public static void setLogger(Logger logger)
Устанавливает объект журналирования, который используется реализацией SyncProvider, предоставляемой SyncFactory. Все реализации SyncProvider могут записывать свои события в этот объект, и приложение может получить доступ к этому объекту с помощью метода getLogger.

Этот метод проверяет, существует ли объект SQLPermission, который предоставляет разрешение setSyncFactory, прежде чем разрешить выполнение метода. Если менеджер безопасности существует и его метод checkPermission запрещает вызов setLogger, этот метод генерирует исключение java.lang.SecurityException.

Параметры:
logger - Экземпляр объекта Logger
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkPermission запрещает вызов setLogger
NullPointerException - если logger равен null
См. также:
  • SecurityManager.checkPermission(java.security.Permission)

setLogger

public static void setLogger(Logger logger, Level level)
Устанавливает объект журналирования, используемый реализациями SyncProvider, предоставляемыми SyncFactory SPI. Все реализации SyncProvider могут записывать свои события в этот объект, и приложение может получить доступ к этому объекту с помощью метода getLogger.

Этот метод проверяет, существует ли объект SQLPermission, который предоставляет разрешение setSyncFactory, прежде чем разрешить выполнение метода. Если менеджер безопасности существует и его метод checkPermission запрещает вызов setLogger, этот метод генерирует исключение java.lang.SecurityException.

Параметры:
logger - Экземпляр объекта Logger
level - Экземпляр объекта Level, указывающий степень необходимой регистрации
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkPermission запрещает вызов setLogger
NullPointerException - если logger равен null
См. также:
  • SecurityManager.checkPermission(java.security.Permission)
  • LoggingPermission

getLogger

public static Logger getLogger() throws SyncFactoryException
Возвращает объект журналирования для приложений, чтобы получать события синхронизации, опубликованные реализациями SyncProvider.
Возвращает:
Объект Logger, указанный для использования реализациями SyncProvider
Исключения:
SyncFactoryException - если объект журналирования не задан.

setJNDIContext

public static void setJNDIContext(Context ctx) throws SyncFactoryException
Устанавливает начальный контекст JNDI, из которого реализации SyncProvider могут извлекаться из пространства имен JNDI

Этот метод проверяет, существует ли объект SQLPermission, который предоставляет разрешение setSyncFactory, прежде чем разрешить выполнение метода. Если менеджер безопасности существует и его метод checkPermission запрещает вызов setJNDIContext, этот метод генерирует исключение java.lang.SecurityException.

Параметры:
ctx - допустимый контекст JNDI
Исключения:
SyncFactoryException - если предоставленный контекст JNDI равен null
SecurityException - если менеджер безопасности существует и его метод checkPermission запрещает вызов setJNDIContext
См. также:
  • SecurityManager.checkPermission(java.security.Permission)

© 1993, 2021, 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/17/docs/api/java.sql.rowset/javax/sql/rowset/spi/SyncFactory.html

Spec-Zone.ru

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