Модель программирования send/receive - отправить/получить

Эта модель программирования позволяет проводить транзакцию IMS в режиме ответа.

Модель обработки для общих постоянных сокетов

Для запуска транзакции в IMS приложение Java выполняет взаимодействие SYNC_SEND_RECEIVE. Приложение предоставляет значение SYNC_SEND_RECEIVE для свойства interactionVerb и значение 0 или 1 для свойства commitMode объекта IMSInteractionSpec, используемого методом выполнения. Однако взаимодействие SYNC_SEND_RECEIVE по-разному выполняется для соединений с общим и выделенным постоянным сокетом.

Соединения с общими постоянными сокетами можно использовать для взаимодействий в режиме фиксации 1 и в режиме фиксации 0. Следующий сценарий описывает взаимодействие SYNC_SEND_RECEIVE через общий постоянный сокет в случае обычной обработки, обработки ошибки и тайм-аута соединения.
  • Сценарий обычной обработки

    Адаптер ресурсовIMS TM, с сервером приложений, получает доступное соединение из пула соединений, либо создает новое соединение. При инициализации соединения адаптер ресурсовIMS TM создает ИД клиента для этого соединения. Созданный ИД клиента определяет соединение с сокетом, а в случае взаимодействия с режимом фиксации 0 - TPIPE и связанную очередь асинхронной блокировки OTMA.

    Адаптер ресурсов IMS проверяет, связан ли сокет с соединением, и отправляет через сокет запрос с данными ввода в IMS Connect. Затем IMS Connect направляет сообщение в IMS, в то время как IMS выполняет транзакцию и возвращает сообщение вывода.

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

  • Сценарий обработки ошибок

    Для получения недоставленных сообщений вывода из расположения, в которое они были перенаправлены, приложение клиента может запустить взаимодействие SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT или SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT через соединение с выделенным постоянным сокетом. Это клиентское приложение указывает целевое расположение в качестве ИД клиента для данного взаимодействия.

    Альтернативным образом, для получения недоставленных сообщений вывода из расположения, в которое они были перенаправлены, приложение клиента может запуститьвзаимодействие SYNC_RECEIVE_ASYNCOUTPUT или SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT или SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT через соединение с общим постоянным сокетом, указав альтернативное ИД клиента. Используя альтернативное ИД клиента, приложение может извлечь недоставленные сообщения асинхронного вывода из любого TPIPE.

    Прим.: По умолчанию свойству purgeAsyncOutput присвоено значение TRUE.
    Если для свойства purgeAsyncOutput задано значение TRUE, удаляются следующие сообщения:
    • Недоставленные сообщения вывода, помещенные в I/O PCB главным приложением IMS
    • Сообщения вывода, помещенные в I/O PBC вспомогательным приложением IMS,вызванным путем межпрограммного переключения.
    Если для свойства purgeAsyncOutput задано значение FALSE, необходимо указать целевое расположение.
  • Сценарий тайм-аута выполнения
    Если возник тайм-аут выполнения, соединение с сокетом остается открытым, но сообщения вывода не доставляются приложению клиента. Однако для взаимодействий с режимом фиксации 0, использующих соединения с общим постоянным сокетом, недоставленные сообщения вывода после тайм-аута выполнения можно извлечь одним из следующих способов:
    • Приложение, которое создало взаимодействие SYNC_SEND_RECEIVE, может создать взаимодействие SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT или SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT.
    • Недоставленное сообщение вывода можно перенаправить в другое расположение, как описано в сценарии обработки ошибок выше.

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

Модель обработки для выделенных постоянных сокетов

Соединения с выделенными постоянными сокетами можно использовать только для взаимодействий в режиме фиксации 0. Следующий сценарий описывает взаимодействие SYNC_SEND_RECEIVE в режиме фиксации 0 через выделенный постоянный сокет в случае обычной обработки, обработки ошибок и тайм-аута выполнения.
  • Сценарий обычной обработки

    Как правило, когда приложение клиента запускает взаимодействие SYNC_SEND_RECEIVE в режиме фиксации 0, сервер приложений возвращает существующее соединение с пользовательским ИД клиента или создает новое соединение с пользовательским ИД клиента. Пользовательский ИД клиента определяет соединение с сокетом, TPIPE и связанную очередь асинхронной блокировки OTMA.

    Адаптер ресурсов IMS проверяет, связан ли сокет с соединением, и отправляет через сокет запрос с данными ввода в IMS Connect. Затем IMS Connect направляет сообщение в IMS, в то время как IMS выполняет транзакцию и возвращает сообщение вывода.При получении сообщения вывода адаптер ресурсов IMS TM посылает IMS внутреннее сообщение ACK, говорящее о том, что необходимо удалить сообщения вывода из очереди IMS. При закрытии соединения или завершении работы приложения соединение возвращается в пул для использования во взаимодействиях с режимом фиксации 0 и тем же пользовательским ИД клиента, запущенных в других приложениях.

  • Сценарий обработки ошибок

    При возникновении любой ошибки приложению клиента передается информация об исключительной ситуации ресурса. Кроме того, при возникновении некоторых ошибок IMS Connect разъединяет соединение с сокетом. В случае взаимодействий в режиме фиксации 0 это означает, что не удалось доставить сообщение вывода приложению клиента. Недоставленные сообщения вывода помещаются в очередь TPIPE, связанную с пользовательским ИД клиента.

    Свойства purgeAsyncOutput и reRoute не применяются к выделенным постоянным сокетам. В выделенном постоянном сокете нельзя удалить или перенаправить недоставленные сообщения вывода.

  • Сценарий тайм-аута выполнения

    При возникновении тайм-аута выполнения сокет остается открытым, а вывода взаимодействия с режимом фиксации 0 помещается в очередь TPIPE, связанную с пользовательским ИД клиента, для дальнейшего извлечения. Когда закрывается соединение или приложение завершает работу, соединение IMSManagedConnection возвращается в пул соединений для повторного использования другим приложением, которое запустило взаимодействие в режиме фиксации 0 с тем же пользовательским ИД клиента.


Комментарии