Questa sezione fa parte dell'attività più ampia di sviluppo delle
applicazioni CMP (Configuration Manager Proxy/Proxy di Gestione configurazione).
Gli
unici metodi di modifica dello stato che forniscono un codice di ritorno che
rappresenta il risultato della richiesta sono i metodi
deploy(). L'esempio di codice riportato di seguito illustra come rilevare
il risultato di un'operazione di distribuzione della topologia mediante
l'oggetto
DeployResult restituito:
...
TopologyProxy t = cmp.getTopology();
boolean isDelta = true;
long timeToWaitMs = 10000;
DeployResult dr = topology.deploy(isDelta, timeToWaitMs);
System.out.println("Overall result = "+dr.getCompletionCode());
// Display overall log messages
Enumeration logEntries = dr.getLogEntries();
while (logEntries.hasMoreElements()) {
LogEntry le = (LogEntry)logEntries.nextElement();
System.out.println("General message: " + le.getDetail());
}
// Display broker specific information
Enumeration e = dr.getDeployedBrokers();
while (e.hasMoreElements()) {
// Discover the broker
BrokerProxy b = (BrokerProxy)e.nextElement();
// Completion code for broker
System.out.println("Result for broker "+b+" = " +
dr.getCompletionCodeForBroker(b));
// Log entries for broker
Enumeration e2 = dr.getLogEntriesForBroker(b);
while (e2.hasMoreElements()) {
LogEntry le = (LogEntry)e2.nextElement();
System.out.println("Log message for broker " + b +
le.getDetail()));
}
}
In questo codice, il metodo deploy() è bloccato fino a quando tutti i broker interessati
hanno risposto alla richiesta di distribuzione. Tuttavia, il metodo include un parametro
long che descrive l'intervallo di attesa massimo di
CMP per l'arrivo delle risposte.
Notare che quando il metodo ritorna, DeployResult
rappresenta il risultato della distribuzione nel momento in cui il metodo
è ritornato. In altre parole, una volta tornato all'applicazione, l'oggetto non è
aggiornato da CMP.
Una volta completato il metodo
deploy(), viene eseguita un'interrogazione a
DeployResult restituito e viene visualizzato il codice di
completamento generale per l'operazione di distribuzione. Questo può essere uno dei seguenti valori:
- (com.ibm.broker.config.proxy.)CompletionCodeType.pending
- Indica che la distribuzione è bloccata in un batch e non viene inviata fino
a quando non si immette ConfigManagerProxy.sendUpdates().
Notare che se questo messaggio viene applicato, viene restituito immediatamente,
senza attendere la scadenza del periodo di timeout.
- CompletionCodeType.submitted
- Indica che il messaggio di distribuzione è stato inviato a
Gestione configurazione ma non è stata ricevuta
alcuna risposta prima del timeout. Notare che se non è possibile inviare il messaggio di distribuzione a
Gestione configurazione, al momento della
distribuzione viene generata l'eccezione
ConfigManagerProxyLoggedException.
- CompletionCodeType.initiated
- Indica che
Gestione configurazione ha risposto che la
distribuzione è stata avviata, ma che non è stata ricevuta alcuna risposta del
broker prima del timeout.
- CompletionCodeType.successSoFar
- Indica che
Gestione configurazione
ha inoltrato la richiesta di distribuzione ed alcuni broker, ma non tutti,
hanno risposto con messaggio di
esito positivo prima della scadenza del timeout. Nessun broker ha risposto in modo negativo.
- CompletionCodeType.success
- Indica che
Gestione configurazione
ha inviato la richiesta di distribuzione e tutti i broker hanno risposto
correttamente prima della scadenza dell'intervallo di timeout. Questo messaggio
viene inviato appena tutti i broker hanno risposto in modo corretto.
- CompletionCodeType.failure
- Indica che
Gestione configurazione
ha inviato la richiesta di distribuzione e che almeno un broker ha
risposto in modo negativo.
Notare che non tutti i codici di completamento vengono
applicati a tutte le distribuzioni. Ad esempio, la
distribuzione ad un singolo broker specifico non può restituire un codice di
completamento uguale a
'successSoFar'.
L'esempio
quindi visualizza i messaggi di registrazione dalla distribuzione che non
possono essere attribuiti a nessun broker specifico. In seguito ad una distribuzione eseguita correttamente, tali messaggi
contengono sempre una voce di registrazione "deploy initiated" originata da
Gestione configurazione,
anche se la distribuzione è stata completata successivamente.
Infine, l'esempio visualizza il codice di completamento ed i
messaggi di registrazione specifici di ciascun broker interessato dalla
distribuzione. Notare che in una distribuzione della struttura degli argomenti o della
topologia, sono inclusi tutti i broker del dominio.
L'insieme dei codici di completamento applicabili ad una risposta da un
broker specifico sono:
- CompletionCodeType.pending
- Indica che la distribuzione è bloccata in un batch e non viene inviata fino
a quando non si immette ConfigManagerProxy.sendUpdates().
- CompletionCodeType.submitted
- Indica che il messaggio di distribuzione è stato inviato ma non è stata
ancora ricevuta alcuna risposta da
Gestione configurazione che indica che la
distribuzione è stata avviata.
- CompletionCodeType.initiated
- Indica che
Gestione configurazione
ha risposto, indicando che la distribuzione è stata avviata, ma non è stata
ancora restituita alcuna risposta dal broker.
- CompletionCodeType.success
- Indica che
Gestione configurazione
ha inviato la richiesta di distribuzione ed il broker ha applicato le
modifiche alla distribuzione.
- CompletionCodeType.failure
- Indica che Gestione configurazione
ha inviato la richiesta di distribuzione ed il broker ha indicato che la
distribuzione non ha avuto esito positivo. Utilizzare getLogEntriesForBroker() per ulteriori
informazioni relative ai motivi per cui la distribuzione non ha avuto esito
positivo.
- CompletionCodeType.notRequired
- Indica che è stata inoltrata una richiesta di distribuzione a
Gestione configurazione che riguardava il
broker fornito, ma la richiesta non è stata inviata al broker perché la
relativa configurazione è già aggiornata.
Consultare
Esecuzione dell'esempio Distribuisci BAR oppure
Esecuzione dell'esempio di gestione del dominio broker
metodo
CMPAPIExerciser.reportDeployResult() per esempi
relativi all'analisi degli oggetti
DeployResult.