Как следует из названия,
соединение с выделенным постоянным сокетом присваивается
одному ИД клиента и остается связанным с этим ИД вплоть до
отключения.
Как правило, соединение с выделенным постоянным
сокетом используется (или повторно используется) последовательно одним
приложением. Тем не менее, соединение с выделенным постоянным сокетом может
быть последовательно использовано несколькими приложениями, которые занимают
данный сокет, используя одинаковый ИД клиента.
Если различные приложения
пытаются использовать соединение с выделенным постоянным сокетом одновременно
по одинаковому ИД клиента, то такая попытка первого приложения будет успешной.
. В ответ на последующие попытки других приложений, в то время как соединение
еще используется первым приложением,
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, то следующие взаимодействия не
поддерживаются:
- восстановление с двухфазовой фиксацией
- диалоговые транзакции
IMS
Поддерживаемый режим фиксации и взаимодействия
Выделенный постоянный сокет можно использовать
только для приложений
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].
ИД клиента занят.