2011-07-14 2 views
0

В соответствии со спецификацией JTA:Какова цель TransactionSynchronizationRegistry?

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

Также:

Пользователь getResource() и putResource() методы библиотека компонент, который управляет данными с транзакциями, от имени вызывающего абонента. Специфические для транзакции данные, предоставленные вызывающим абонентом, не являются , сразу же сбрасываются на ресурс с привязкой к транзакции, но вместо этого используется . Данные, хранящиеся в кэше, хранятся в связанной с транзакцией информации , которая имеет отношение «нуль-один-к-одному» с транзакционным контекстом вызывающего.

Однако я все еще озадачен.

Во-первых, что означает «[...] предоставляет возможность регистрировать объекты синхронизации со специальной семантикой упорядочения» и как можно настроить порядок?

Затем, каковы некоторые варианты использования, в которых необходимо «связывать объекты ресурсов с текущей транзакцией»?

ответ

3

Во-первых, то, что делает «[...] дает возможность зарегистрировать объекты синхронизации с помощью специальных упорядочения семантики» означают и как возможно установить упорядоченность?

«Специальный упорядочивания семантики» объясняется в registerInterposedSynchronization Javadoc, который пытается объяснить, как эти слушатель увольняют по отношению к Transaction.registerSynchronization.

Затем, какие-то прецеденты, в которых необходимо «связать объектов ресурса с текущей транзакцией»?

putResource/getResource позволяет владельцам звонков хранить «транзакционные локальные» объекты.

Например, контейнер JPA может регистрироваться при использовании. Синхронизация при использовании. Компонент сеанса состояния может обновлять объект во время SessionSynchronization.beforeCompletion. EntityManager будет хранить объект в текущей транзакции с использованием putResource, а затем очистить данные до базы данных во время Synchronization.beforeCompletion, который, как гарантируется, будет работать после.