Ciclo de Vida do Nó Input Definido pelo Usuário Java

Este tópico o orienta pelos vários estágios na existência de um nó input definido pelo usuário gravado utilizando a linguagem de programação Java. Ele cobre os seguintes estágios no ciclo de vida de um nó input:

Registro

Durante a fase de registro um nó input definido pelo usuário escrito em Java torna-se conhecido ao intermediário. O nó é registrado com o intermediário através do método estático getNodeName. Sempre que um intermediário inicia, ele carrega todas as classes Java relevantes. O método estático getNodeName é chamado nesse ponto e o intermediário registra o nó input com o nome de nó especificado no método getNodeName. Se não for especificado um nome de nó, o intermediário criará automaticamente um nome para o nó com base no pacote onde ele está contido.

Utilizar um método estático aqui significa que o método pode ser chamado pelo intermediário antes que o próprio nó seja instanciado.

Instanciação

Um nó input Java definido pelo usuário é instanciado quando um intermediário implementa um fluxo de mensagens contendo o nó input definido pelo usuário. Quando o nó é instanciado, o construtor da classe de nó input é chamado.

Quando um nó é instanciado, quaisquer terminais que foram especificados são criados. Um nó de processamento de mensagem pode ter qualquer número de terminais de entrada e de saída associados a ele. Você deve incluir os métodos createInputTerminal e createOutputTerminal no construtor do nó para declarar esses terminais.

Se deseja lidar com exceções passadas de volta para seu nó input, utilize createOutputTerminal para criar um terminal de captura para seu nó input. Quando o nó input capturar um erro, o terminal catch o processará da mesma maneira que um nó MQInput regular o faria. Você pode permitir que a maioria das exceções, como exceções causadas por problemas de implementação, sejam transmitidas de volta ao intermediário, o qual avisará o usuário sobre quaisquer possíveis erros de configuração.

Como um mínimo, a classe do construtor somente necessita criar esses terminais de saída no nó input. Contudo, se precisar inicializar valores de atributos, tais como definir o analisador que fará a análise inicial de uma mensagem transmitida do nó input, você deve incluir também esse código neste ponto no nó input.

Processando

O processamento de mensagens para um nó input começa quando o intermediário chama o método run. O método run cria a mensagem de entrada, e deve conter a função de processamento para o nó input.

O método run é definido em MbInputNodeInterface, que é a interface utilizada em um nó input definido pelo usuário que o define como nó input. É preciso incluir um método run no nó. Se um método run não for incluído no nó input definido pelo usuário, o código fonte do nó não será compilado.

Quando um fluxo de mensagens contendo um nó input definido pelo usuário é implementado com êxito, o intermediário chama o método de implementação run do nó, e continua a chamar esse método enquanto aguarda o processo das mensagens.

Quando um fluxo de mensagens é iniciado, um único encadeamento é despachado pelo intermediário e é chamado para o método run do nó input. Se o método dispatchThread() for chamado, mais encadeamentos podem também ser criados no mesmo método run. Esses novos encadeamentos chamam imediatamente para o método run do nó input e podem ser tratados da mesma forma que o encadeamento original. O número de novos encadeamentos que podem ser criados é definido pela propriedade additionalInstances. O modelo recomendado serve para certificar-se de que os encadeamentos são despachados após a criação de uma mensagem e antes que ela seja propagada. Isso assegura que somente um encadeamento por vez esteja aguardando por uma nova mensagem.

O nó input definido pelo usuário pode escolher um modelo de encadeamento e ser responsável pela implementação do modelo escolhido. Se o nó input suportar a propriedade additionalInstances e dispatchThread() for chamada, o código deverá ser totalmente reentrante e todas as funções chamadas pelo nó também devem ser reentrantes. Se o nó input determinar encadeamento único, isto é, se ele não chamar dispatchThread(), deverá ser limpo para o usuário desse nó, de modo que a propriedade additionalInstances não terá resultado sobre o nó input.

Para obter informações adicionais sobre o modelo de encadeamento para nós Input definidos pelo usuário, consulte Encadeamentos.

Destruição

Um nó input Java definido pelo usuário é destruído quando o nó é excluído ou o intermediário é encerrado. Você não necessita incluir algo em seu código que especifique que o nó deve ser excluído fisicamente, porque isso pode ser tratado pelo coletor de lixo.

Contudo, se quiser ser notificado de que um nó está prestes a ser excluído, você pode utilizar o método onDelete. Você pode querer fazer isso, se existirem recursos além dos que serão coletados como lixo que você deseja excluir. Por exemplo, se você tiver aberto um soquete, este não será fechado corretamente quando o nó for excluído automaticamente. Você pode incluir essa instrução no método onDelete, para assegurar que o soquete seja fechado corretamente.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
as24998_