Soquetes Persistentes Compartilháveis

Um soquete persistente compartilhável é um soquete que pode ser compartilhado (reutilizado em série) por vários aplicativos que executam interações de modo de confirmação 1 (CM1) ou de modo de confirmação 0 (CM0).

Para um aplicativo que executa uma interação no modo de confirmação 0 em um soquete persistente compartilhável, o IMS TM Resource Adapter gera automaticamente um ID de cliente com o prefixo HWS. Esse ID de cliente representa e identifica a conexão do soquete e o tpipe associado do OTMA. Para esse tipo de soquete, apenas IDs de clientes gerados pelo IMS TM Resource Adapter são permitidos. Se você especificar um ID de cliente para uma conexão que não foi definida como CM0 em um soquete persistente compartilhável, uma exceção será lançada e retornada para o cliente.

Restrição: Os programas de aplicativos do IMS que inserem mensagens em um PCB alternativo não devem usar nomes que comecem com o HWS para os PCBs alternativos. O IMS TM resource adapter não pode recuperar mensagens do HWS.
Dica: Os IDs do cliente são diferentes de IDs de clientes alternativos. O ID do cliente alternativo é uma propriedade da classe IMSInteractionSpec. Os IDs de clientes alternativos são usados para recuperar mensagens de saída assíncrona das filas de suspensão (tpipes) do OTMA.

Modo de Confirmação e Interação Suportados

Um soquete persistente compartilhável pode ser usado para aplicativos Java™ que executam interações no modo de confirmação 1 ou no modo de confirmação 0.

Tabela 1. Modos de Confirmação, Verbos de Interação e Níveis de Sincronização por Tipo de Soquete Suportado
Modo de Confirmação Tipo de soquete Verbo de interação ID do cliente Nível de sincronização
CM1 Persistente compartilhável
  • SYNC_END_CONVERSATION (para transações de conversação)
  • SYNC_SEND_RECEIVE
Gerado e gerenciado automaticamente Nenhum ou Confirmar
CM0 Persistente compartilhável
  • SYNC_SEND
  • SYNC_SEND_RECEIVE
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT
  • SYNC_RECEIVE_CALLOUT (para modelo de programação de callout não gerenciado)
Gerado e gerenciado automaticamente Confirmar
Persistente dedicado
  • SYNC_SEND
  • SYNC_SEND_RECEIVE
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT
  • SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT
Especificado por aplicativos clientes (a propriedade clientID) Confirmar

O verbo de interação SYNC_RECEIVE_ASYNCOUTPUT foi descontinuado e substituído pelo verbo de interação SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT.

Recuperação de Mensagem

Qualquer mensagem de saída que não possa ser entregue a um cliente Java que executa uma interação CM0 em um soquete persistente compartilhável pode ser enfileirada para recuperação posterior. A saída secundária é sempre tratada como uma saída do CM0 e pode ser enfileirada novamente para recuperação subsequente.

Considere a situação na qual uma interação CM1 ou CM0 em um soquete persistente compartilhável executa um comutador de programa para programa. Se os dois programas retornarem saída, a segunda mensagem de saída retornada será tratada como um saída CM0. Ela poderá ser enfileirada novamente e depois recuperada.

Se uma interação do CM1 ou do CM0 em um soquete persistente compartilhável criar um comutador entre programas que chama outra interação do CM0 que resulta em uma saída secundária (que é sempre o CM0), a saída poderá ser enfileirada novamente para recuperação posterior.

Se mensagens de saída não entregues que estão enfileiradas na fila de suspensão assíncrona ou tpipe do IMS OTMA não forem recuperadas usando o ID de cliente alternativo, a interação original e a recuperação deverão ser chamadas no mesmo aplicativo cliente usando a mesma conexão de soquete. O mesmo ID de cliente gerado que identifica a conexão de soquete compartilhável e o tpipe associado do OTMA deverão ser usados para a interação original e recuperação de qualquer saída assíncrona dessa interação.

Em soquetes persistentes compartilháveis, mensagens de saída não entregues poderão ser tratadas de várias formas:
  • Recupere a saída não distribuível especificando o nome da fila de suspensão do OTMA que tem as mensagens de saída assíncrona como o valor da propriedade do ID do cliente alternativo do objeto IMSInteractionSpec.
  • Limpe a saída não entregue. Para limpar as mensagens de saída não entregues, o valor da propriedade purgeAsyncOutput do IMSInteractionSpec deve ser configurado como true. Essa propriedade de entrada determinará se o IMS Connect limpará a saída do PCB de E/S não entregue. A propriedade purgeAsyncOutput é válida somente com o verbo de interação SYNC_SEND_RECEIVE. Se a propriedade não for especificada no SYNC_SEND_RECEIVE, o padrão será true.
  • Roteie novamente as mensagens para outro destino. É possível rotear novamente a mensagem de saída não entregue a um destino diferente configurando a propriedade reRoute do IMSInteractionSpec como true. Essa propriedade é válida apenas para os verbos de interação SYNC_SEND_RECEIVE e SYNC_SEND. Se a propriedade reRoute for configurada como true, a mensagem de saída não entregue será enfileirada em um destino denominado normalmente fornecido pelo aplicativo cliente. Esse destino é especificado na propriedade reRouteName de IMSInteractionSpec. Se a propriedade reRoute for configurada como true e se não for fornecida nenhuma reRouteName, o valor da propriedade reRouteName será o valor especificado no arquivo de configuração do IMS Connect. Se nenhum valor for especificado no arquivo de configuração do IMS Connect, o valor padrão HWS$DEF será usado.

Conexões de Soquetes Persistentes Compartilháveis

As conexões de soquetes persistentes compartilháveis são criadas por um connection factory do IMS com valores requeridos para as propriedades customizadas a seguir:
  • Nome de host: nome do host TCP/IP do sistema que está executando o IMS Connect
  • Número da porta: número da porta associada
  • Nome do armazenamento de dados: nome do IMS de destino
  • CM0 dedicado: false
O valor padrão da propriedade CM0Dedicated é false, o que assegura que o connection factory crie uma conexão de soquete persistente compartilhável, a não ser que a propriedade CM0Dedicated tenha sido explicitamente configurada como true.

Feedback