Пример приложения Java для приема запросов асинхронных внешних вызовов

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

Следующий пример кода демонстрирует приложение Java, настроенное для получения внешних запросов.

// Поиск JNDI возвращает connFactory 
InitialContext initCntx = new InitialContext();
ConnectionFactory connFactory = 
      (ConnectionFactory) initCntx.lookup("java:comp/env/ibm/ims/IMSTarget"); 

IMSConnectionSpec connSpec = new IMSConnectionSpec();
Connection connection = connFactory.getConnection(connSpec);
Interaction interaction = connection.createInteraction(); 
IMSInteractionSpec interactionSpec = new IMSInteractionSpec(); 

//задать режим фиксации и уровень синхронизации 
interactionSpec.setCommitMode(0); 
interactionSpec.setSyncLevel(1);

// Восьмисимвольное имя очереди, из которой будут извлекаться асинхронные сообщения
String calloutQueueName = new String ("CALLOUTQ");
// Задать имя асинхронной очереди для сообщения внешнего вызова
interactionSpec.setAltClientID(calloutQueueName);
 
// Задать interactionVerb для извлечения асинхронного вывода с тайм-аутом
interactionSpec.setInteractionVerb(com.ibm.connector2.ims.ico.
IMSInteractionSpec.SYNC_RECEIVE_CALLOUT);
interactionSpec.setExecutionTimeout(3600000);

for (;;) {
      try {
            // Выполнить взаимодействие
            iteraction.execute(interactionSpec, null, calloutMsg); 

            // Дальнейшая обработка calloutMsg
            :
      } catch (Exception e) {
            // если исключительная ситуация - это ошибка тайм-аута выполнения,
            // можно либо ничего не предпринимать и продолжить повторение циклов,
            // либо обработать ошибку и затем прервать цикл
            break;
      }
}

iteraction.close(); 
connection.close();

Комментарии