Для запуска транзакции в IMS приложение Java выполняет взаимодействие SYNC_SEND_RECEIVE. Приложение предоставляет значение SYNC_SEND_RECEIVE для свойства interactionVerb и значение 0 или 1 для свойства commitMode объекта IMSInteractionSpec, используемого методом выполнения. Однако взаимодействие 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.
Когда приложение клиента закрывает соединение или завершает свою работу, соединение возвращается в пул для использования в других взаимодействиях с уровнем фиксации 1 или 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 с тем же пользовательским ИД клиента.