オブジェクトの最新の完了コードを使用して、ご使用のアプリケーションがオブジェクトに対して行った要求の結果を判別します。
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 アプリケーションは待機するからです。
より効率的なアプリケーションでマルチスレッド環境に適したものの場合、管理対象オブジェクトの通知を使用する代替手法をコーディングします。CMP アプリケーション内のオブジェクト通知を使用した、ブローカー管理の結果の検査 を参照してください。
必要であれば、BrokerProxy.setSynchronous() メソッドを使用してプロパティーを同期で変更することができます。 プロパティー変更を同期で行う場合、setLongDescription() などのメソッドは、その変更がブローカーにより処理されるまで返しません。 プロパティーの同期変更について詳しくは、CMP API Javadoc 情報内の BrokerProxy.setSynchronous() メソッドの説明を参照してください。