|
Spec-Zone .ru
спецификации, руководства, описания, API
|
См.: Описание
| Интерфейс | Описание |
|---|---|
| SyncResolver |
Определяет платформу, которая позволяет приложениям использовать ручное дерево решений, чтобы решить то, что должно быть сделано, когда конфликт синхронизации происходит.
|
| TransactionalWriter |
Специализированный интерфейс, который облегчает расширение стандарта
SyncProvider абстрактный class так, чтобы это имело более прекрасный, гранулировал управление транзакциями. |
| XmlReader |
Специализированный интерфейс, который облегчает расширение
SyncProvider абстрактный class для XML ориентируемые провайдеры синхронизации. |
| XmlWriter |
Специализированный интерфейс, который облегчает расширение
SyncProvider абстрактный class для XML ориентируемые провайдеры синхронизации. |
| Класс | Описание |
|---|---|
| SyncFactory |
Интерфейс Поставщика услуг (SPI) механизм, который генерирует
SyncProvider экземпляры, которые будут использоваться разъединенным RowSet объекты. |
| SyncProvider |
Механизм синхронизации, который обеспечивает возможности читателя/писателя разъединенного
RowSet объекты. |
| Исключение | Описание |
|---|---|
| SyncFactoryException |
Указывает на ошибку с
SyncFactory механизм. |
| SyncProviderException |
Указывает на ошибку с
SyncProvider механизм. |
SyncProvider реализации, посылая электронное письмо jdbc@sun.com. Выполнение этого помогает сделать разработчиков, знающих о реализации. Позволять a RowSet возразите, чтобы использовать реализацию, поставщик должен зарегистрировать ее в SyncFactory одиночный элемент. (См. комментарий class для SyncProvider для полного объяснения процесса регистрации и соглашения о присвоении имен, которое будет использоваться.)
Следующие классы и интерфейсы составляют javax.sql.rowset.spi пакет:
SyncFactory
SyncProvider
SyncFactoryException
SyncProviderException
SyncResolver
XmlReader
XmlWriter
TransactionalWriter
javax.sql пакет, также часть SPI: RowSetReader
RowSetWriter
A SyncProvider реализация обеспечивает разъединенный RowSet объект с механизмами для того, чтобы считать данные в это и для того, чтобы записать данные, которые были изменены в этом назад к базовому источнику данных. Читатель, a RowSetReader или XMLReader объект, данные чтений в a RowSet возразите когда CachedRowSet методы execute или populate вызываются. Писатель, a RowSetWriter или XMLWriter возразите, записывает изменения обратно к базовому источнику данных когда CachedRowSet метод acceptChanges вызывается.
Процесс записи изменений в a RowSet объект к его источнику данных известен как синхронизация. SyncProvider реализация это a RowSet объект использует, определяет уровень синхронизации что RowSet использование писателя объекта. Различные уровни синхронизации упоминаются как классы.
Более низкие уровни синхронизации известны как уровни оптимистичного параллелизма, потому что они оптимистично предполагают, что не будет никаких конфликтов или очень немногих конфликтов. Конфликт существует когда те же самые данные, измененные в RowSet объект был также изменен в источнике данных. Используя оптимистичный параллелизм модель означает это, если есть конфликт, модификации или к источнику данных или к RowSet объект будет потерян.
Более высокие уровни синхронизации вызывают пессимистичные, потому что они предполагают, что другие будут получать доступ к источнику данных и делать модификации. Переменные уровни набора этих классов блокировок, чтобы увеличить возможности, что никакие конфликты не происходят.
Самый низкий уровень синхронизации просто пишет любые изменения, произведенные в RowSet возразите против его базового источника данных. Писатель не делает ничего, чтобы проверить на конфликты. Если есть конфликт, и значения источника данных перезаписываются, изменения, которыми произвели другие стороны в источнике данных, теряются.
RIXMLProvider реализация использует самый низкий уровень синхронизации и только пишет RowSet изменения к источнику данных. Это - истина, потому что обычно источники данных XML не включают методам транзакции для того, чтобы поддержать целостность данных. Однако, определенные группы стандартов рассмотрели предлагающую основанную на XML синхронизацию. Для получения дополнительной информации см.
Для следующие выравнивают, проверки писателя, чтобы видеть, есть ли какие-либо конфликты, и если есть, это ничего не пишет в источник данных. Проблема с этим уровнем параллелизма - это, если другая сторона изменила соответствующие данные в источнике данных начиная с RowSet объект получил свои данные, изменения, произведенные в RowSet объект теряется. RIOptimisticProvider реализация использует этот уровень синхронизации.
В более высоких уровнях синхронизации, называемой пессимистическим параллелизмом, писатель предпринимает шаги, чтобы избежать конфликтов, устанавливая блокировки. Установка блокировок может измениться от установки блокировки на единственной строке к установке блокировки на таблице или всем источнике данных. Уровень синхронизации является поэтому компромиссом между возможностью пользователей получить доступ к источнику данных одновременно и возможности писателя удержать данные RowSet возразите и его источник данных синхронизировался.
Это - требование, чтобы все разъединялись RowSet объекты (CachedRowSet, FilteredRowSet, JoinRowSet, и WebRowSet объекты), получают их SyncProvider объекты от SyncFactory механизм.
Ссылочная реализация (RI) обеспечивает двух провайдеров синхронизации.
SyncFactory экземпляр предоставит к разъединенному RowSet возразите, когда никакая реализация провайдера не определяется.RowSet возразите и источник данных. Если есть конфликт, он ничего не делает, означая что изменения для RowSet объект не сохраняется к источнику данных. WebRowSet объект, который является набором строк, который может быть записан в формате XML или чтении от формата XML. RIXMLProvider реализация не делает никакой проверки вообще конфликты и просто пишет любые обновленные данные в WebRowSet возразите против базового источника данных. WebRowSet объекты используют этого провайдера, когда они имеют дело с данными XML. SyncProvider реализации связываются ссылочной реализацией, которая всегда делает их доступными RowSet реализации. SyncProvider реализации делают себя доступными, будучи зарегистрированным в SyncFactory одиночный элемент. Когда a RowSet возразите запрашивает провайдера, определяя это в конструкторе или как параметр CachedRowSet метод setSyncProvider, SyncFactory одноэлементные проверки, чтобы видеть, был ли требуемый провайдер зарегистрирован в этом. Если это имеет, SyncFactory создает экземпляр этого и передает это к запросу RowSet объект. Если SyncProvider реализация, которая определяется, не была зарегистрирована, SyncFactory одиночный элемент вызывает a SyncFactoryException объект, который будет брошен. Если никакой провайдер не определяется, SyncFactory одиночный элемент создаст экземпляр реализации провайдера значения по умолчанию, RIOptimisticProvider, и передайте это к запросу RowSet объект. Если a WebRowSet объект не определяет провайдера в своем конструкторе, SyncFactory приведет этому пример RIOptimisticProvider. Однако, конструктор для WebRowSet реализуется, чтобы установить провайдера в RIXMLProvider, который читает и пишет a RowSet объект в формате XML.
См. SyncProvider спецификация class для получения дальнейшей информации.
Поставщики могут разработать реализацию SyncProvider с любым из возможных уровней синхронизации, таким образом давая RowSet возражает выбору механизмов синхронизации. Поставщик может сделать его реализацию доступной, регистрируя полностью определенное имя class в Oracle Corporation в jdbc@sun.com. Этот процесс обсуждается в дальнейших деталях ниже.
Интерфейс Поставщика услуг обеспечивает сменный механизм который
2.2 Регистрация в Третья сторона
Детали о том, как определить системные свойства или свойства в файле свойств и как сконфигурировать Контекст JNDI, объясняются подробно в
2.3 Политики Генерации Экземпляра Провайдера SyncFactory
Эти политики исследуются более подробно в
Совместимое Кроме того,
3.2 Классы
JSR 114 определяет ряд классов, чтобы описать качество синхронизации a
3.3 Блокировки
JSR 114 определяет ряд констант, которые определяют, были ли какие-либо блокировки помещены в a Эти константы нужно считать дополнительными к константам класса. Настройка по умолчанию для большинства настроек класса требует, чтобы никакие блокировки источника данных не остались когда a
3.4 Обновляемые Представления
A
3.5 Использование В примере ниже, ссылка реализация CachedRowSetImpl реконфигурировала свой текущий объект SyncProvider, вызывая метод setSyncProvider. A Когда Приложение может тогда использовать Комментарий для 2.0 Архитектура Интерфейса Поставщика услуг
2.1 Краткий обзор
SyncProvider реализации могут быть зарегистрированы и затем сгенерированы когда требующийся. Ленивый ссылочный механизм, используемый SyncFactory ограничивает ненужное потребление ресурсов, не создавая экземпляр, пока оно не требуется разъединенным RowSet объект. SyncFactory class также обеспечивает стандартный API, чтобы сконфигурировать опции журналирования и потоки, которые могут быть обеспечены деталью SyncProvider реализация. SyncFactory
SyncProvider реализация должна быть зарегистрирована в SyncFactory для разъединенного RowSet объект получить это и таким образом использовать javax.sql.RowSetReader и javax.sql.RowSetWriter реализации. Следующие регистрационные механизмы доступны всем SyncProvider реализации:
SyncProvider объекты. SyncFactory для механизма, чтобы функционировать правильно. SyncFactory Описание class. SyncFactory генерирует требуемый SyncProvider возразите, был ли провайдер правильно зарегистрирован. Следующие политики придерживаются к когда любой разъединенный RowSet объект инстанцируют с указанным SyncProvider реализация или реконфигурирована во времени выполнения с альтернативой SyncProvider объект.
SyncProvider объект определяется и SyncFactory не содержит ссылки на провайдера, a SyncFactoryException бросается. SyncProvider объект определяется и SyncFactory содержит ссылку на провайдера, требуемый провайдер предоставляется. SyncProvider объект определяется, ссылочный провайдер реализации RIOptimisticProvider предоставляется. SyncFactory class. 3.0 Руководство Разработчика SyncProvider
3.1 Требования
SyncProvider реализация, которая является полностью сменной в SyncFactory должен расширить и реализовать все абстрактные методы в SyncProvider class. Кроме того, реализация должна определить класс, блокируя и обновляемые возможности представления, определенные в SyncProvider Определение class. Один или больше SyncProvider критерии описания должны поддерживаться. Ожидается, что реализации поставщика предложат диапазон класса, блокировки, и обновляемых возможностей представления. SyncProvider соглашение о присвоении имен должно сопровождаться как детализировано в SyncProvider Описание class. SyncProvider объект может предложить разъединенный RowSet объект. Эти классы перечисляются от самого низкого качества службы к самому высокому.
SyncProvider реализация возвращая этот класс просто попытается записать любые данные, которые изменились в RowSet возразите против базового источника данных, перезаписывая независимо от того, что там. Никакая попытка не предпринимается, чтобы сравнить исходные значения с текущей стоимостью, чтобы видеть, есть ли конфликт. RIXMLProvider реализуется с этим классом. SyncProvider реализация возвращая этот класс проверит на конфликты в строках, которые изменились между последней синхронизацией и текущей синхронизацией полным ходом. Любые изменения в инициирующем источнике данных, которые были изменены, не будут отражены в разъединенном RowSet объект. Если нет никаких конфликтов, изменений в RowSet объект будет записан источнику данных. Если есть конфликты, никакие изменения не пишутся. RIOptimisticProvider реализация использует этот класс. SyncProvider реализация возвращая этот класс проверит все строки, включая строки, которые не изменились в разъединенном RowSet объект. Таким образом любые изменения к строкам в базовом источнике данных будут отражены в разъединенном RowSet возразите, когда синхронизация заканчивается успешно. SyncProvider реализации возвращая этот класс заблокируют строку в инициирующем источнике данных, который соответствует строке, изменяемой в RowSet объект уменьшить возможность других процессов, изменяющих те же самые данные в источнике данных. SyncProvider реализация возвращая этот класс заблокирует все представление и/или таблицу, на которую влияет исходный запрос, используемый, чтобы заполнить a RowSet объект. RowSet базовый источник данных объекта и, если так, в которые конструкции помещаются блокировки. Эти блокировки останутся на источнике данных в то время как RowSet объект разъединяется от источника данных. RowSet объект разъединяется от его источника данных. Классы GRADE_LOCK_WHEN_MODIFIED и GRADE_LOCK_WHEN_LOADED позвольте разъединенный RowSet объект иметь мелкомодульный контроль над степенью блокировки.
SyncProvider реализации если иначе не направлено a RowSet объект. RowSet объект. RowSet объект. RowSet объект. RowSet объект может быть заполнен с данными от SQL VIEW. Следующие константы указывают ли a SyncProvider объект может обновить данные в таблице или таблицах от который VIEW был получен.
SyncProvider реализация поддерживает синхронизацию к таблице или таблицам от который SQL VIEW используемый, чтобы заполнить a RowSet объект получается. SyncProvider реализация не поддерживает синхронизацию к таблице или таблицам от который SQL VIEW используемый, чтобы заполнить a RowSet объект получается. SyncProvider Классификация и Блокировка
CachedRowSetImpl crs = new CachedRowSetImpl();
crs.setSyncProvider("com.foo.bar.HASyncProvider");
Приложение может получить объект SyncProvider, использующийся в настоящее время разъединенным RowSet объект. Это может также получить класс синхронизации, с которой провайдер был реализован и степень блокировки использующегося в настоящее время. Кроме того, у приложения есть гибкость, чтобы установить степень блокировки, которая будет использоваться, который может увеличить возможности для успешной синхронизации. Их работа показывают в следующем фрагменте кода.
SyncProvider sync = crs.getSyncProvider();
switch (sync.getProviderGrade()) {
case: SyncProvider.GRADE_CHECK_ALL_AT_COMMIT
//A high grade of optimistic synchronization
break;
case: SyncProvider.GRADE_CHECK_MODIFIED_AT_COMMIT
//A low grade of optimistic synchronization
break;
case: SyncProvider.GRADE_LOCK_WHEN_LOADED
// A pessimistic synchronization grade
break;
case: SyncProvider.GRADE_LOCK_WHEN_MODIFIED
// A pessimistic synchronization grade
break;
case: SyncProvider.GRADE_NONE
// No synchronization with the originating data source provided
break;
}
switch (sync.getDataSourcLock() {
case: SyncProvider.DATASOURCE_DB_LOCK
// A lock is placed on the entire datasource that is used by the
// Это - также возможное использование статического служебного метода в RowSet object
break;
case: SyncProvider.DATASOURCE_NO_LOCK
// No locks remain on the originating data source.
break;
case: SyncProvider.DATASOURCE_ROW_LOCK
// A lock is placed on the rows that are touched by the original
// SQL statement used to populate
// the RowSet object that is using the SyncProvider
break;
case: DATASOURCE_TABLE_LOCK
// A lock is placed on all tables that are touched by the original
// SQL statement used to populated
// the RowSet object that is using the SyncProvider
break;
SyncFactory class, чтобы определить список SyncProvider реализации, в настоящий момент зарегистрированные в SyncFactory.
Enumeration e = SyncFactory.getRegisteredProviders();
4.0 Разрешение Конфликтов Синхронизации
Интерфейс SyncResolver обеспечивает путь к приложению, чтобы решить вручную, что сделать, когда конфликт происходит. Когда CachedRowSet метод acceptChanges концы и обнаружили один или более конфликтов, это бросает a SyncProviderException объект. Приложение может поймать исключение и иметь его, получают a SyncResolver объект, вызывая метод SyncProviderException.getSyncResolver(). SyncResolver объект, который является специальным предложением отчасти CachedRowSet объект или a JdbcRowSet объект, который реализовал SyncResolver взаимодействуйте через интерфейс, исследует строку конфликтов строкой. Это - копия RowSet объект, синхронизируемый за исключением того, что это содержит только данные от источника данных, это вызывает конфликт. Все другие значения столбцов устанавливаются в null. Чтобы переместиться от одного конфликта оценивают другому, a SyncResolver объект обеспечивает методы nextConflict и previousConflict. SyncResolver интерфейс также обеспечивает методы для того, чтобы они сделали следующее:
RowSet возразите, должно ли это быть изменено CachedRowSet метод acceptChanges вызывается, это делегирует к RowSet объект SyncProvider объект. Как писатель обеспечил этим SyncProvider объект реализуется, определяет, какой уровень (класс) проверки конфликты будет сделан. После того, как вся проверка конфликты завершается, и один или более конфликтов был найден, метод acceptChanges броски a SyncProviderException объект. Приложение может поймать исключение и использовать его, чтобы получить a SyncResolver объект. SyncResolver методы, чтобы получить информацию о каждом конфликте и решить, что сделать. Если логика приложения или пользователь решают что значение в RowSet объект должен быть тем, чтобы сохраниться, приложение или пользователь могут перезаписать значение источника данных с этим. SyncResolver у интерфейса есть больше детали. 5.0 Связанные Спецификации
6.0 Связанная Документация
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92