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.