Isto faz parte da tarefa maior de desenvolver aplicativos do Configuration Manager Proxy
(CMP).
Os métodos
apenas de alteração de estado que fornecem um código de retorno representando o resultado
do pedido são os métodos deploy(). A amostra de código a seguir mostra como
descobrir o resultado de uma operação de implementação de topologia utilizando o objeto
DeployResult retornado:
...
TopologyProxy t = cmp.getTopology();
boolean isDelta = true;
long timeToWaitMs = 10000;
DeployResult dr = topology.deploy(isDelta, timeToWaitMs);
System.out.println("Overall result = "+dr.getCompletionCode());
// Exibe mensagens de registro gerais
Enumeration logEntries = dr.getLogEntries();
while (logEntries.hasMoreElements()) {
LogEntry le = (LogEntry)logEntries.nextElement();
System.out.println("General message: " + le.getDetail());
}
// Exibe informações específicas do intermediário
Enumeration e = dr.getDeployedBrokers();
while (e.hasMoreElements()) {
// Descobre o intermediário
BrokerProxy b = (BrokerProxy)e.nextElement();
// Código de conclusão do intermediário
System.out.println("Result for broker "+b+" = " +
dr.getCompletionCodeForBroker(b));
// Entradas de registro do intermediário
Enumeration e2 = dr.getLogEntriesForBroker(b);
while (e2.hasMoreElements()) {
LogEntry le = (LogEntry)e2.nextElement();
System.out.println("Log message for broker " + b +
le.getDetail()));
}
}
Neste código, o método deploy() fica bloqueado até
que todos os intermediários afetados tenham respondido ao pedido de implementação. No entanto,
o método inclui um parâmetro long que descreve o período de tempo máximo
que o CMP aguarda a chegada da resposta.
Observe que, quando o método
finalmente retornar, o DeployResult representará
o retornado da implementação no momento em que o método foi retornado. Em outras palavras,
depois de retornado ao aplicativo, o objeto não é atualizado pelo CMP.
Após
a conclusão do método
deploy(), o exemplo interroga
o
DeployResult retornado e exibir o código de conclusão geral
para a operação de implementação. Isto utiliza um dos seguintes valores:
- (com.ibm.broker.config.proxy.)CompletionCodeType.pending
- Significa que a implementação é mantida em um batch e não será enviada até que ConfigManagerProxy.sendUpdates() seja emitido.
Observe que, se esta mensagem se aplicar, ela será retornada imediatamente - ou seja,
sem aguardar a expiração do tempo limite.
- CompletionCodeType.submitted
- Significa que a mensagem de implementação foi enviada para o Gerenciador de Configuração, mas
nenhuma resposta foi recebida antes de ocorrer o tempo limite. Observe que, se a mensagem de
implementação não puder ser enviada para o Gerenciador de Configuração,
será emitida uma ConfigManagerProxyLoggedException no tempo de implementação.
- CompletionCodeType.initiated
- Significa que o Gerenciador de Configuração respondeu
informando que a implementação foi iniciada, mas não foram recebidas respostas do
intermediário antes de ocorrer o tempo limite.
- CompletionCodeType.successSoFar
- Significa que o Gerenciador de Configuração emitiu
um pedido de implementação e alguns, mas não todos os intermediários responderam com uma mensagem "bem-sucedida"
antes de expirar o tempo limite. Nenhum intermediário respondeu
negativamente.
- CompletionCodeType.success
- Significa que o Gerenciador de Configuração emitiu
o pedido de implementação e todos os intermediários relevantes responderam com êxito antes
da expiração do tempo limite. Esta mensagem é enviada assim que todos os intermediários
relevantes tiverem respondido com êxito.
- CompletionCodeType.failure
- Significa que o Gerenciador de Configuração emitiu
o pedido de implementação e que pelo menos um intermediário respondeu negativamente.
Observe que nem todos os códigos de conclusão se aplicam a todas as implementações. Por
exemplo, a implementação em um único intermediário específico não pode resultar
em um código de conclusão de
'successSoFar'.
O exemplo a seguir exibe mensagens de registro
da implementação que não podem ser atribuídas a nenhum intermediário específico.
Em uma implementação bem-sucedida, estas mensagens sempre incluem uma entrada de registro "implementação iniciada"
originária no Gerenciador de Configuração,
mesmo que a implementação tenha sido concluída posteriormente.
Por último, o exemplo exibe
o código de conclusão e mensagens de registro específicas de cada intermediário
afetado pela implementação. Observe que, em uma implementação de topologia ou de árvore de tópicos,
isto representa cada intermediário no domínio.
O conjunto de códigos de conclusão aplicáveis
a uma resposta de um intermediário específico são:
- CompletionCodeType.pending
- Significa que a implementação é mantida em um batch e não será enviada até que ConfigManagerProxy.sendUpdates() seja emitido.
- CompletionCodeType.submitted
- Significa que a mensagem de implementação foi enviada, mas ainda não foi recebida nenhuma resposta
do Gerenciador de Configuração informando que
a implementação foi iniciada.
- CompletionCodeType.initiated
- Significa que o Gerenciador de Configuração respondeu, informando
que a implementação foi iniciada, mas que ainda não foi retornada nenhuma resposta
do intermediário.
- CompletionCodeType.success
- Significa que o Gerenciador de Configuração emitiu
o pedido de implementação e o intermediário aplicou com êxito as alterações
na implementação.
- CompletionCodeType.failure
- Significa que o Gerenciador de Configuração emitiu
o pedido de implementação e que o intermediário respondeu informando que a implementação
não foi bem-sucedida. Utilize getLogEntriesForBroker() para obter
informações adicionais sobre o motivo da falha da implementação.
- CompletionCodeType.notRequired
- Significa que foi enviado um pedido de implementação para o Gerenciador de Configuração
que envolvia o intermediário fornecido, mas o intermediário não recebeu o pedido enviado
porque sua configuração já está atualizada.
Consulte
Executando a Implementação da Amostra BAR ou o método
Executando a Amostra de Gerenciamento de Domínios Intermediários CMPAPIExerciser.reportDeployResult()
para obter exemplos de como analisar objetos
DeployResult.