Выделенные постоянные сокеты

Как следует из названия, соединение с выделенным постоянным сокетом присваивается одному ИД клиента и остается связанным с этим ИД вплоть до отключения.

Как правило, соединение с выделенным постоянным сокетом используется (или повторно используется) последовательно одним приложением. Тем не менее, соединение с выделенным постоянным сокетом может быть последовательно использовано несколькими приложениями, которые занимают данный сокет, используя одинаковый ИД клиента.

Если различные приложения пытаются использовать соединение с выделенным постоянным сокетом одновременно по одинаковому ИД клиента, то такая попытка первого приложения будет успешной. . В ответ на последующие попытки других приложений, в то время как соединение еще используется первым приложением, IMS Connect выдаст сообщения об ошибках - занято другим клиентом (DUPCLNT).

Ошибка занятости другим клиентом также возникает, если приложение, получившее соединение с выделенным постоянным сокетом и использующее определенный ИД клиента, работает в среде, где соединения с выделенным постоянным сокетом могут происходить из нескольких экземпляров WebSphere Application Server. Например, такие ошибки могут возникнуть в среде, где существует несколько экземпляров WebSphere Application Server, управляемых администратором рабочих задач.
Рекомендация: В таких средах рекомендуется избегать развертывания приложения, использующего соединение с выделенным постоянным сокетом.
Соединения с выделенным постоянным сокетом могут использоваться в среде, где единственный экземпляр WebSphere Application Server подключен к одному экземпляру IMS Connect. Бывают ситуации, в которых один экземпляр WebSphere Application Server может быть подключен к нескольким экземплярам IMS Connect. В этом случае, если между WebSphere Application Server и IMS Connect используется Sysplex Distributor, то следующие взаимодействия не поддерживаются:

Поддерживаемый режим фиксации и взаимодействия

Выделенный постоянный сокет можно использовать только для приложений Java™, выполняющих взаимодействия в режиме фиксации 0.

Табл. 1. Поддерживаемые режимы фиксации, команды взаимодействия и уровни синхронизации для разных типов сокетов
Режим фиксации Тип сокета Команда взаимодействия ИД клиента Уровень синхронизации
CM1 Общие постоянные
  • SYNC_END_CONVERSATION (для диалоговых транзакций)
  • SYNC_SEND_RECEIVE
Автоматически создаются и управляются Нет или Подтвердить
CM0 Общие постоянные
  • SYNC_SEND
  • SYNC_SEND_RECEIVE
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT
  • SYNC_RECEIVE_CALLOUT (для программной модели неуправляемых внешних вызовов)
Автоматически создаются и управляются Подтвердить
Выделенный постоянный
  • SYNC_SEND
  • SYNC_SEND_RECEIVE
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT
Задается приложениями клиентов (свойство clientID) Подтвердить

Команда взаимодействия SYNC_RECEIVE_ASYNCOUTPUT не используется и заменяется на SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT.

Извлечение сообщений

Взаимодействия SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT и SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT (вместе с устаревшими взаимодействиями SYNC_RECEIVE_ASYNCOUTPUT) в выделенных постоянных сокетах позволяют клиентским приложениям извлекать сообщения из следующих источников:
  • Сообщения, которые были помещены в очередь асинхронного вывода IMS OTMA в результате сбоя взаимодействия режима фиксации 0
  • Сообщения, поступившие из приложения IMS, добавившего сообщение в ALTPCB (альтернативный блок связи программ).
  • Сообщения от перенаправления вывода из транзакции, выполненной в соединении с общим сокетом
Для извлечения сообщений клиентское приложение должно предоставить ИД клиента, задающий tpipe, в котором сохранены сообщения асинхронного вывода. Недоставленные выходные сообщения от взаимодействий в выделенных постоянных сокетах нельзя перенаправить или удалить.

При использовании нескольких систем IMS без главного члена (Super Member ОТМА) может оказаться недоступной функция получения всех имеющихся выходных сообщений с помощью взаимодействий SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT.

Соединения с выделенным постоянным сокетом

Соединения с выделенными постоянными сокетами создаются фабрикой соединений IMS. При этом существуют обязательные значения как минимум для следующих пользовательских свойств:
  • Имя хоста: имя хоста TCP/IP системы, в которой выполняется IMS Connect.
  • Порт: связанный порт
  • Имя хранилища данных: имя целевой IMS
  • Выделенный в CM0: true

Для того чтобы фабрика соединений создавала соединения с выделенным постоянным сокетом, свойству CM0Dedicated должно быть присвоено значение true.

Если существует несколько фабрик соединений, настроенных на создание выделенных постоянных сокетов для одного экземпляра IMS Connect, то только одна из них может связать сокет с определенным ИД клиента в каждый момент. Например, предположим, что фабрика соединений успешно создает соединение сокета, выделенное для ИД клиента CLIENT01. Вторая фабрика соединений также пытается создать соединение сокета, выделенное для CLIENT01. Если соединение сокета, созданное первой фабрикой соединения, все еще подключено к IMS Connect, второе соединение получит следующую исключительную ситуацию:
javax.resource.spi.EISSystemException: ICO0001E:
Ошибка com.ibm.connector2.ims.ico.IMSTCPIPManagedConnection@23766050.processOutputOTMAMsg
(byte [], InteractionSpec,Record). IMS Connect сообщил об ошибке: RETCODE=[8], 
REASONCODE=[DUPECLNT]. 
ИД клиента занят. 

Комментарии