Прием сообщений запросов синхронных внешних вызовов от приложений не MDB

Для приема запросов внешних вызовов в очередь блокировки и связывания ответа с соответствующим запросом требуется изменение приложения Java™.

Прежде чем начать

предварительное требование: Администратор WebSphere Application Server должен настроить фабрику общих соединений, которую будет использовать приложение Java для приема запросов внешних вызовов.

Об этой задаче

Ниже перечислены основные действия, выполняемые приложением Java для приема запроса синхронного внешнего вызова от IMS и ответа на него.

Процедура

  1. Для приема запроса синхронного внешнего вызова приложение выполняет следующие действия:
    1. Включает для взаимодействия режим фиксации 0 (COMMIT_THEN_SEND).
      interactionSpec.setCommitMode(IMSInteractionSpec.COMMIT_THEN_SEND); 
    2. Устанавливает уровень синхронизации CONFIRM.
      interactionSpec.setSyncLevel(IMSInteractionSpec.SYNC_LEVEL_CONFIRM); 
    3. Указывает имя tpipe (очередь блокировки) OTMA в качестве имени очереди внешних вызовов.
      // 8-символьное имя асинхронной очереди блокировки OTMA, 
      // откуда будут приниматься сообщения.
      String calloutQueueName = new String (“CALLOUTQ”);
      // Указывает имя очереди для сообщений внешних вызовов.
      interactionSpec.setAltClientID(calloutQueueName);
    4. Указывает команду взаимодействия SYNC_RECEIVE_CALLOUT.
      interactionSpec.setInteractionVerb(IMSInteractionSpec.SYNC_RECEIVE_CALLOUT);
    5. Указывает тип принимаемых запросов внешних вызовов: только синхронный (CALLOUT_REQUEST_SYNC), только асинхронный (CALLOUT_REQUEST_ASYNC), синхронный и асинхронный (CALLOUT_REQUEST_BOTH). В следующем примере принимаются сообщения только запросов синхронных внешних вызовов.
      // Установка режима приема только сообщений запросов синхронных внешних вызовов.
      interactionSpec.setCalloutRequestType(IMSInteractionSpec.CALLOUT_REQUEST_SYNC); 
    6. Задает значение тайм-аута выполнения. В следующем примере задается 5-секундный тайм-аут.
      interactionSpec.setExecutionTimeout(5000);
    7. Выполняет взаимодействие. В следующем примере выполняется взаимодействие, и возвращается запрос в виде сообщения calloutRequestMsg.
      iteraction.execute(interactionSpec, null, calloutRequestMsg); 
  2. Получает маркер соответствия из экземпляра IMSInteractionSpec. В следующем примере задается 5-секундный тайм-аут.
    byte[] corrToken = interactionSpec.getSyncCalloutCorrelationToken();
  3. Обрабатывает запрос. В предыдущем примере запрос возвращается в виде calloutRequestMsg.
  4. Отвечает на запрос.
    1. Выбирает команду взаимодействия SYNC_SEND.
      interactionSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND); 
    2. Устанавливает маркер соответствия для возврата вместе с запросом.
      interactionSpec.setSyncCalloutCorrelationToken(corrToken); 
    3. Выполняет взаимодействие. В следующем примере выполняется взаимодействие, и отправляется ответное сообщение внешнего вызова (calloutRespondMsg).
      iteraction.execute(interactionSpec, calloutRespondMsg, null); 

Комментарии