Modelo de Processamento de Soquete Persistente Compartilhável

As conexões do soquete persistente compartilhável são conexões que podem ser usadas para interações do modo de confirmação 1 e do modo de confirmação 0. Os seguintes cenários descrevem a interação SYNC_SEND_RECEIVE em um soquete persistente compartilhável durante o processamento normal, o processamento de erros e o tempo limite de conexão.

Cenário de Processamento Normal

O IMS TM Resource Adapter, com o servidor de aplicativos, obtém uma conexão disponível do conjunto de conexões ou cria uma nova conexão. O IMS TM Resource Adapter, como parte da inicialização de uma nova conexão, gera um ID do cliente para a conexão. O ID do cliente gerado identifica a conexão do soquete e para interações do modo de confirmação 0, o tpipe e a fila de suspensão assíncrona do OTMA.

O IMS TM Resource Adapter assegura que um soquete seja associado à conexão e envia a solicitação com os dados de entrada para o IMS Connect usando este soquete. O IMS Connect envia então a mensagem para o IMS, no qual o IMS executa a transação e retorna a mensagem de saída.

Para interações do modo de confirmação 0, ao receber a mensagem de saída, o IMS TM Resource Adapter envia uma mensagem ACK para o IMS, que sinaliza ao IMS para descartar a saída da fila do IMS. Quando o aplicativo cliente fecha ou encerra a conexão, ela é retornada ao conjunto de conexões para reutilização por outras interações de modo de confirmação 0 ou 1.

Cenário de Processamento de Erros

Todos os erros resultam em uma exceção de recurso lançada para o aplicativo cliente. Além disso, alguns erros resultam na desconexão do soquete pelo IMS Connect. Para as interações do modo de confirmação 0, uma exceção significa que a mensagem de saída não pode ser entregue ao aplicativo cliente. Entretanto, após as exceções, as mensagens de saída não entregues para interações do modo de confirmação 0 em conexões do soquete persistente compartilhável poderão ser recuperadas se a interação SYNC_SEND_RECEIVE especificar que a saída não entregue deve ser roteada novamente para um destino específico. Para fazer com que uma mensagem de saída não entregue seja roteada novamente para um destino específico, as seguintes propriedades adicionais devem ser especificadas no objeto IMSInteractionSpec que é passado na interação SYNC_SEND_RECEIVE:
  • Configure a propriedade purgeAsyncOutput como false para que a saída não entregue não seja limpa.
  • Configure a propriedade reRoute como true e especifique um destino para o novo roteamento na propriedade RouteName.

Para recuperar a saída não entregue de um destino do novo roteamento, um aplicativo cliente separado emitirá uma interação SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT em uma conexão de soquete persistente dedicado. O aplicativo cliente fornece o destino do novo roteamento como o ID de cliente da interação.

Como alternativa, para recuperar a saída não entregue de um destino do novo roteamento, um aplicativo cliente separado emitirá uma interação SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT em uma conexão de soquete persistente compartilhável especificando o ID de cliente alternativo. Usando o ID de cliente alternativo, um aplicativo cliente poderá recuperar mensagens de saída assíncronas não entregues de qualquer tpipe.

O valor padrão da propriedade purgeAsyncOutput é true. Quando o valor da propriedade purgeAsyncOutput for true, as mensagens de saída a seguir serão limpas:
  • Mensagem de saída não entregue inserida no I/O Program Communications Block (I/O PCB) pelo programa de aplicativo primário do IMS
  • Mensagens de saída inseridas no I/O PCB pelo programa de aplicativo secundário do IMS chamado pelos comutadores de programa a programa
Quando a propriedade purgeAsyncOutput for configurada como false, o destino do novo roteamento deve ser especificado.

Cenário de Tempo Limite de Execução

Se ocorrer um tempo limite de execução, a conexão de soquete permanecerá aberta mas a mensagem de saída não será entregue ao aplicativo cliente. No entanto, seguindo uma exceção de tempo limite de execução, as mensagens de saída não entregues para interações de modo de confirmação 0 nas conexões de soquetes persistentes compartilháveis poderão ser recuperadas de uma das seguintes formas:
  • O mesmo aplicativo cliente que emitiu a interação SYNC_SEND_RECEIVE poderá emitir uma interação SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT.
  • Mensagem de saída não entregue pode ser roteada novamente para um destino específico, conforme descrito no cenário de processamento de erro.

Quando o aplicativo cliente fecha a conexão ou é finalizado, a conexão é retornada ao conjunto de conexões para que possa ser reutilizada por outras interações do modo de confirmação 0 ou modo de confirmação 1.


Feedback