これは、構成マネージャー・プロキシー (CMP) アプリケーションの開発という、より大きなタスクの一部です。
GregorianCalendar oldCCTime = b.getTimeOfLastCompletionCode(); b.setLongDescription(newDesc); GregorianCalendar newCCTime = oldCCTime; while ((newCCTime == null) || (newCCTime.equals(oldCCTime))) { newCCTime = b.getTimeOfLastCompletionCode()); Thread.sleep(1000); } CompletionCodeType ccType = b.getLastCompletionCode(); if (ccType == CompletionCodeType.success) { // etc. }
この例では、 アプリケーションはまず、getTimeOfLastCompletionCode() メソッドを使用してブローカー上での アクションが最後に完了したのはいつかを判別します。このメソッドは、 最後にトポロジーが完了コードを受信した時刻を戻します。戻りコードを受け取らなかったときは、 ヌル値を戻します。アプリケーションは、 ブローカーの LongDescription の更新を試行した後、 引き続きトポロジーをモニターして setLongDescription() コマンドの結果が CMP に 戻されるのを待ちます。この状態になると、while ループから制御が抜け、 最後の完了コードが判別されます。
コマンドの結果を判別するためのこのアルゴリズムは、マルチスレッド・アプリケーションには不適当であると同時に、非効率的です。なぜなら、構成マネージャーが要求を処理している間、CMP アプリケーションは待機するからです。
これを行うためのより適した方法は、管理対象オブジェクトの通知を使用することです。構成マネージャー・プロキシーとオブジェクト通知を使用した、ブローカー・ドメイン管理の結果の検査を参照してください。