Поддержка других транзакций

IMS TM также поддерживает локальные транзакции, обработку с одноэтапной фиксацией, обработку неглобальных транзакций и обработку диалоговых транзакций в рамках глобальных транзакций.

Локальная транзакция

В архитектуре соединений J2EE определен интерфейс javax.resource.cci.LocalTransaction, который позволяет администратору ресурсов локально управлять транзакцией вместо администратора транзакций. Однако IMS TM поддерживает координацию транзакции только через администратор транзакций. Таким образом, IMS TM не поддерживает интерфейс javax.resource.cci.LocalTransaction. При вызове метода IMSConnection.getLocalTransaction() возникает исключительная ситуация NotSupportedException. Для применения поддержки транзакции с помощью IMS TM необходимо либо использовать интерфейс транзакций JTA, либо задать соответствующий атрибут транзакции в файле описания приложения. Сведения находятся в разделе о поддержке глобальных транзакций в клиентских приложениях.

Обработка с одноэтапной фиксацией

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

Обработка неглобальной транзакции

Если в приложении не обрабатываются глобальные транзакции (например, если атрибуту транзакций присвоено значение TX_NOTSUPPORTED), то для обработки всех неглобальных транзакций используется "Синхронизация при возврате" (OTMA SyncLevel=None). К тому моменту, когда фиксация транзакции IMS завершается, вывод уже возвращен клиенту.

Обработка диалоговых транзакций в области глобальных транзакций

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

Диалоговую транзакцию можно запустить в области глобальных транзакций, если выполнены следующие условия:
  • Все итерации выполняются на одном уровне транзакции. Например, если первая итерация обрабатывается в области глобальных транзакций, то все последующие итерации в этой диалоговой транзакции IMS должны обрабатываться на уровне глобальных транзакций. Если запустить вторую итерацию без указания области транзакции, IMS OTMA выдаст сообщение об ошибке.
  • Перед запуском следующей итерации в диалоговой транзакции IMS предыдущая итерация должна быть завершена путем выполнения операции фиксации или отката. Несколько итераций из одной области глобальных транзакций нельзя объединить в группу.

Комментарии