WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

CMP アプリケーション内の最新の完了コードを使用した、ブローカー管理の結果の検査

オブジェクトの最新の完了コードを使用して、ご使用のアプリケーションがオブジェクトに対して行った要求の結果を判別します。

CMP API 内の状態変更メソッドのほとんどは、特定のアクションの成功または失敗を示す戻りコードを提供しません。 これらのメソッドの場合、アクションの結果をディスカバーするために、異なるコードを書き込む必要があります。 管理対象オブジェクトがスレッド間で共用されていないことを前提として、以下のコード断片を使用して、ブローカーの LongDescription の変更要求の結果を見付けることができます。ここで、bBrokerProxy オブジェクトのインスタンスです。
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() メソッドの説明を参照してください。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:05


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | ae33080_