Recuperando Mensagens de Pedidos de Callout Síncronos de Aplicativos Não MDB

Você deve modificar o aplicativo Java™ para recuperar as solicitações de callout na fila de suspensão e manipular a correlação da resposta para a solicitação apropriada.

Antes de Iniciar

Pré-requisito: O administrador do WebSphere Application Server deve configurar um connection factory compartilhável que será usado pelo aplicativo Java para recuperar os pedidos de callout.

Sobre Esta Tarefa

As etapas a seguir são chaves em um aplicativo Java para recuperar e responder a uma solicitação de callout síncrono do IMS.

Procedimento

  1. Para recuperar o pedido de callout síncrono:
    1. Configure o modo de confirmação de interação como 0 (COMMIT_THEN_SEND).
      interactionSpec.setCommitMode(IMSInteractionSpec.COMMIT_THEN_SEND); 
    2. Configure o nível de sincronização de interação como CONFIRM.
      interactionSpec.setSyncLevel(IMSInteractionSpec.SYNC_LEVEL_CONFIRM); 
    3. Especifique o nome da fila de callout para o nome tpipe (fila de suspensão) do OTMA.
      // Um nome com 8 caracteres da fila de suspensão assíncrona do OTMA na qual as 
      // mensagens deverão ser recuperadas a partir da
      cadeia calloutQueueName = new String (“CALLOUTQ”);
      // Configure o nome da fila para as mensagens de callout
      interactionSpec.setAltClientID(calloutQueueName);
    4. Configure o verbo de interação como SYNC_RECEIVE_CALLOUT.
      interactionSpec.setInteractionVerb(IMSInteractionSpec.SYNC_RECEIVE_CALLOUT);
    5. Especifique o tipo de pedido de callout que será recuperado: apenas síncrono (CALLOUT_REQUEST_SYNC), apenas assíncrono (CALLOUT_REQUEST_ASYNC) ou ambos (CALLOUT_REQUEST_BOTH). O seguinte exemplo recupera apenas mensagens de pedidos de callout síncronos.
      // Especificar para recuperar apenas mensagens de pedidos de callout síncronos
      interactionSpec.setCalloutRequestType(IMSInteractionSpec.CALLOUT_REQUEST_SYNC); 
    6. Especifique o valor de tempo limite de execução. O seguinte exemplo configura o valor de tempo limite como 5 segundos.
      interactionSpec.setExecutionTimeout(5000);
    7. Execute a interação. O seguinte exemplo executa a interação e o pedido é retornado como calloutRequestMsg.
      iteraction.execute(interactionSpec, null, calloutRequestMsg); 
  2. Obtenha o token de correlação a partir da instância IMSInteractionSpec. O seguinte exemplo configura o valor de tempo limite como 5 segundos.
    byte[] corrToken = interactionSpec.getSyncCalloutCorrelationToken();
  3. Processe o pedido. No exemplo anterior, o pedido foi retornado como calloutRequestMsg.
  4. Envie a resposta.
    1. Configure o verbo de interação como SYNC_SEND.
      interactionSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND); 
    2. Configure o token de correlação que será enviado de volta com o pedido.
      interactionSpec.setSyncCalloutCorrelationToken(corrToken); 
    3. Execute a interação. O seguinte exemplo executa a interação e envia a mensagem de resposta de callout (calloutRespondMsg).
      iteraction.execute(interactionSpec, calloutRespondMsg, null); 

Feedback