これは、構成マネージャー・プロキシー (CMP) アプリケーションの開発という、より大きなタスクの一部です。
要求の結果を表す戻りコードを提供する状態変更メソッドは、deploy() メソッドだけです。
以下のコード例は、戻された
DeployResult を使用してトポロジー・デプロイ操作の結果を見付ける方法を示します。
...
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()));
}
}
このコードでは、 deploy() メソッドは、影響のあるすべてのブローカーがデプロイメント要求に対して応答するまでブロックされます。
しかし、メソッドには、CMP が応答の到着を待機する最大時間長を記述する long パラメーターが含まれます。
メソッドが最終的に戻される場合、DeployResult はそのメソッドが戻された時点のデプロイメントの結果を表します。
つまり、オブジェクトは、アプリケーションに戻されると、CMP によって更新されません。
deploy() メソッドが完了した後、例では、戻された
DeployResult を問い合わせて、デプロイ操作全体の完了コードを表示します。
これは、以下の値のいずれかになります。
- (com.ibm.broker.config.proxy.)CompletionCodeType.pending
- デプロイはバッチ内で保留され、ConfigManagerProxy.sendUpdates() を発行するまで送信されないことを意味します。
このメッセージが該当すると、すぐに、つまりタイムアウト期間が切れるのを待たずに戻されることに注意してください。
- CompletionCodeType.submitted
- デプロイ・メッセージは構成マネージャーに送信されましたが、タイムアウトになる前に応答が受信されなかったことを意味します。
デプロイメント・メッセージを構成マネージャーに送信できない場合、代わりに、デプロイ時に ConfigManagerProxyLoggedException がスローされます。
- CompletionCodeType.initiated
- 構成マネージャーが返信し、デプロイメントが開始されたことを通知しましたが、タイムアウトになる前にブローカー応答が受信されなかったことを意味します。
- CompletionCodeType.successSoFar
- 構成マネージャーがデプロイメント要求を発行し、タイムアウト期間の期限が切れる前にすべてではなく一部のブローカーが正常実行メッセージで応答したことを意味します。
否定応答したブローカーはありません。
- CompletionCodeType.success
- 構成マネージャーがデプロイメント要求を発行し、タイムアウト期間の期限が切れる前に関係のあるすべてのブローカーが肯定応答したことを意味します。
このメッセージは、関係のあるすべてのブローカーが肯定応答するとすぐに送信されます。
- CompletionCodeType.failure
- 構成マネージャーがデプロイメント要求を発行し、1 つ以上のブローカーが否定応答したことを意味します。
すべての完了コードがすべてのデプロイに該当するわけではないことに注意してください。
例えば、特定の単一のブローカーにデプロイすると、
'successSoFar' という完了コードを出すことはありません。
次の例は、特定のブローカーの属性にできなかったデプロイメントからのログ・メッセージを表示します。
デプロイが成功すると、それらのメッセージには、デプロイメントがその後で完了したとしても、構成マネージャーから発信される「デプロイが開始しました」というログ項目が常に含まれます。
最後に、例では、デプロイメントの影響を受けた個々のブローカーに固有の完了コードおよびログ・メッセージが表示されます。
トポロジーまたはトピック・ツリー・デプロイでは、ドメイン内のすべてのブローカーが影響を受けることに注意してください。
特定のブローカーからの応答に適用できる完了コードのセットは以下のとおりです。
- CompletionCodeType.pending
- デプロイはバッチ内で保留され、ConfigManagerProxy.sendUpdates() を発行するまで送信されないことを意味します。
- CompletionCodeType.submitted
- デプロイ・メッセージは送信されましたが、デプロイメントが開始されたことを示す応答をまだ構成マネージャーから受け取っていないことを意味します。
- CompletionCodeType.initiated
- 構成マネージャーが返信し、デプロイメントが開始されたことを通知しましたが、応答がまだブローカーから戻されていないことを意味します。
- CompletionCodeType.success
- 構成マネージャーがデプロイメント要求を発行し、ブローカーがデプロイメントの変更を正常に適用したことを意味します。
- CompletionCodeType.failure
- 構成マネージャーがデプロイメント要求を発行し、ブローカーはデプロイメントが失敗したという応答を出しました。
デプロイメントが失敗した理由について詳しくは、getLogEntriesForBroker() を使用してください。
- CompletionCodeType.notRequired
- 示されているブローカーに関係する構成マネージャーにデプロイメント要求が実行依頼されましたが、構成がすでに最新になっていたのでこの要求はブローカーに送信されなかったことを意味します。
DeployResult オブジェクトを構文解析する方法の例については、『
BAR のデプロイ・サンプルの実行』または『
Broker Domain Management サンプルの実行』の
CMPAPIExerciser.reportDeployResult() メソッドを参照してください。