Esto forma parte de la tarea global para el desarrollo de las aplicaciones del
Proxy del Gestor de configuración
(CMP).
Los únicos métodos de cambio de estado que
suministran un código de retorno que representa el resultado de la petición son los métodos
deploy(). El siguiente ejemplo de código muestra cómo descubrir el resultado de una operación de despliegue
de topología usando el objeto
DeployResult:
...
TopologyProxy t = cmp.getTopology();
boolean isDelta = true;
long timeToWaitMs = 10000;
DeployResult dr = topology.deploy(isDelta, timeToWaitMs);
System.out.println("Overall result = "+dr.getCompletionCode());
// Visualizar mensajes de anotaciones globales
Enumeration logEntries = dr.getLogEntries();
while (logEntries.hasMoreElements()) {
LogEntry le = (LogEntry)logEntries.nextElement();
System.out.println("General message: " + le.getDetail());
}
// Visualizar información específica del intermediario
Enumeration e = dr.getDeployedBrokers();
while (e.hasMoreElements()) {
// Descubrir el intermediario
BrokerProxy b = (BrokerProxy)e.nextElement();
// Código de terminación para el intermediario
System.out.println("Result for broker "+b+" = " +
dr.getCompletionCodeForBroker(b));
// Entradas de anotaciones para el intermediario
Enumeration e2 = dr.getLogEntriesForBroker(b);
while (e2.hasMoreElements()) {
LogEntry le = (LogEntry)e2.nextElement();
System.out.println("Log message for broker " + b +
le.getDetail()));
}
}
En este código, el método deploy() está bloqueado hasta que todos los
intermediarios afectados han respondido a la petición de despliegue. No obstante, el método incluye un parámetro
long que describe el tiempo máximo que el
CMP espera a que lleguen las respuestas.
Tenga en cuenta que cuando finalmente vuelva el método,
DeployResult representará el resultado del despliegue en la hora en que volvió el método. En otras palabras, el CMP no actualiza
el objeto.
Cuando el método
deploy() termine, el ejemplo interrogará a
DeployResult devuelto y visualizará el código de terminación global correspondiente a la operación de
despliegue. Esto tendrá uno de los siguientes valores:
- (com.ibm.broker.config.proxy.)CompletionCodeType.pending
- Indica que el despliegue se mantiene en un lote y no se envía hasta que se emite
ConfigManagerProxy.sendUpdates().
Recuerde que si este mensaje se aplica se devuelve inmediatamente, es decir, sin esperar a que transcurra el
periodo de tiempo de espera excedido.
- CompletionCodeType.submitted
- Indica que el mensaje de despliegue se envió al Gestor de
configuración pero no se recibió ninguna respuesta
antes de que pasara el tiempo de espera excedido. Recuerde que si el mensaje de despliegue no puede enviarse al
Gestor de
configuración,
en su lugar se generará una excepción ConfigManagerProxyLoggedException en el momento del despliegue.
- CompletionCodeType.initiated
- Indica que el Gestor de
configuración ha contestado indicando que el despliegue se ha iniciado, pero que no recibieron respuestas del intermediario
antes de que se excediera el tiempo de espera.
- CompletionCodeType.successSoFar
- Indica que el Gestor de
configuración emitió la petición de despliegue y que algunos, no todos,
intermediarios respondieron con un mensaje de "realización correcta" antes de que se excediese el tiempo de espera. Ningún intermediario respondió negativamente.
- CompletionCodeType.success
- Indica que el Gestor de
configuración emitió la petición de despliegue y que todos los
intermediarios pertinentes respondieron correctamente antes de que se excediese el tiempo de espera. Este mensaje se envía tan pronto como todos los intermediarios pertinentes han respondido correctamente.
- CompletionCodeType.failure
- Indica que el Gestor de
configuración emitió la petición de despliegue y que un intermediario como mínimo
respondió negativamente.
Recuerde que no todos los códigos de terminación se aplican a todos los despliegues. Por ejemplo, el despliegue para un solo
intermediario específico no puede tener como resultado un código de terminación
'successSoFar'.
A continuación, el ejemplo visualiza cualquier mensaje del registro
procedente del despliegue que no puede atribuirse a ningún intermediario específico. En un despliegue correcto, estos mensajes incluyen siempre una entrada "deploy initiated"
procedente del Gestor de
configuración,
incluso si el despliegue concluyó posteriormente.
Finalmente, el ejemplo visualiza el código de terminación
y todos los mensajes de anotaciones específicos de cada intermediario afectado por el despliegue. Tenga en cuenta que en un despliegue de topología o de árbol de temas son todos los intermediarios del dominio.
El conjunto de códigos de terminación aplicables a una respuesta desde un intermediario específico es:
- CompletionCodeType.pending
- Indica que el despliegue se mantiene en un lote y no se envía hasta que se emite
ConfigManagerProxy.sendUpdates().
- CompletionCodeType.submitted
- Indica que el mensaje de despliegue se envió pero no se ha recibido aún ninguna respuesta del
Gestor de
configuración indicando que se ha iniciado el despliegue.
- CompletionCodeType.initiated
- Indica que el Gestor de
configuración ha contestado indicando que el despliegue se ha
iniciado, pero que el intermediario no ha devuelto aún ninguna respuesta.
- CompletionCodeType.success
- Indica que el Gestor de
configuración emitió la petición de despliegue y que el intermediario
aplicó correctamente los cambios en el despliegue.
- CompletionCodeType.failure
- Indica que el Gestor de
configuración emitió la petición de despliegue y que el intermediario
respondió indicando que el despliegue no se había realizado correctamente. Utilice getLogEntriesForBroker() si desea ver más información sobre los motivos por los cuales
el despliegue no se ha ejecutado correctamente.
- CompletionCodeType.notRequired
- Indica que se ha enviado una petición de despliegue al Gestor de
configuración que implicaba
al intermediario facilitado, pero que no se ha enviado una respuesta al intermediario porque su configuración
ya está actualizada.
Consulte el apartado
Ejecución del ejemplo de despliegue de BAR o el método
Ejecución del ejemplo de gestión de dominio de intermediarios CMPAPIExerciser.reportDeployResult() donde encontrará ejemplos
para el análisis de objetos
DeployResult.