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

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

JavaCompute ノードを使用したグローバル・キャッシュへのアクセス

JavaCompute ノードを使用して、グローバル・キャッシュまたは WebSphere® eXtreme Scale の外部グリッド内のマップと対話できます。

始める前に:
JavaCompute ノードを使用して、グローバル・マップにデータを保管できます。 その後、別の JavaCompute ノードを作成すると、このノードはグローバル・キャッシュからデータを取得でき、処理またはルーティングを行うことができます。 JavaCompute ノードは、MbGlobalMap オブジェクトを使用してグローバル・キャッシュまたは外部グリッドにアクセスします。このクラスを使用して、マップの取得と、マップ内のデータの書き込み/取得を行うことができます。 マップを明示的に作成することはできませんが、存在しないマップを取得する場合、マップは自動的に作成されます。 外部グリッドからグローバル・マップを取得すると、グリッドへの接続がない場合は、getGlobalMap メソッドによってグリッドへの接続が確立されます。

キャッシュとの対話はメッセージ・フロー・トランザクションの外部で発生し、直ちにコミットされます。 キャッシュと対話するノードの下流で例外がスローされた場合、キャッシュ対話はロールバックされません。

以下の手順は、あるメッセージ・フローがマップにデータを追加し、別のフローがそのマップからデータを取得する方法を説明しています。

  1. JavaCompute ノードを含むメッセージ・フローを作成します。

    JavaCompute ノードは、MQOutput ノードの前または後ろに配置できます。 次の例では、JavaCompute ノードは MQOutput ノードの後ろに配置されています。そのため、JavaCompute ノードは、出力メッセージのメッセージ ID を使用できます。

    このグラフィックは、MQOutput ノードに接続されている MQInput ノードを示しており、MQOutput ノードはさらに JavaCompute ノードに接続されています。

  2. JavaCompute ノードをダブルクリックします。 「新規 Java 計算ノード・クラス」ウィザードが開きます。
  3. 「Java 計算ノード・クラス」ペインで、該当する情報を指定してから「次へ」をクリックします。 デフォルト値のまま「次へ」をクリックしても構いません。
  4. 「Java 計算ノード・クラス・テンプレート」ペインで、最適なテンプレートを選択してから「完了」をクリックします。

    テンプレート Java™ ファイルがエディターで開かれます。ここで独自のコードを追加できます。

  5. 組み込みキャッシュからマップを取得するには、またはマップが存在しない場合にマップを作成するには、次の例のように MbGlobalMap オブジェクトを追加します。 MbGlobalMap オブジェクトは、Java プラグイン API の資料でも説明されています。
    MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
    この例では、「MyMap」というマップを取得します。 マップが存在しない場合、作成されます。 または、組み込みキャッシュを使用するときには、次の例で示すように、マップ名を指定せずにデフォルト・マップを使用することもできます。 外部グリッドに接続するときには、デフォルト・マップはありません。外部グリッド上の有効なマップ名を指定する必要があります。
    MbGlobalMap globalMap = MbGlobalMap.getGlobalMap();
    キャッシュは WebSphere eXtreme Scale 動的マップを使用します。 マップには任意の名前を指定できますが、SYSTEM.BROKER で始まる名前は使用できません。これはブローカーが使用するために予約されています。 デフォルト・マップの名前は SYSTEM.BROKER.DEFAULTMAP で、このマップを使用することも、消去することもできます。
    外部グリッドからマップを取得するには、MbGlobalMap オブジェクトを追加し、外部グリッド上のマップの名前を指定し、グリッドへの接続に使用する構成可能サービスの名前を指定します。
    MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
    この例では、マップ「MyMap.LUT」は、XC10 アプライアンスの外部グリッド上にあります。グリッドへ接続するために使用する構成可能サービスは「xc10Connection」という名前です。
  6. オプション: データをグローバル・キャッシュに保持した後、自動的に削除するまでの時間の長さを秒単位で指定します。

    この時間は存続時間 と呼ばれ、マップ項目の最終更新日時からのカウントです。 この時間は、MbGlobalMap オブジェクトを取得するときに指定します。 この値は、その MbGlobalMap オブジェクトを使用して作成されたすべてのキャッシュ項目に適用されます。 詳細な指示については、グローバル・キャッシュからのデータの削除を参照してください。

  7. マップにデータを入力するには、次の例で示すように、マップ内にキーと値のペアを作成する必要があります。 キーと値には、Java プリミティブ・タイプおよびストリングを使用できます。組み込みグリッドの場合のみ、鍵をプリミティブまたはストリングの配列にすることもできます。
    globalMap.put(key, val);
  8. メッセージ・フローを保存します。
  9. 別のメッセージ・フローから保管データにアクセスするには、JavaCompute ノードが含まれるフローを作成します。

    例えば、次のメッセージ・フローには、マップから適切な情報を取得し、MQReply ノード経由で応答メッセージを送信する JavaCompute ノードが含まれています。

    このグラフィックは、JavaCompute ノードに接続されている MQInput ノードを示しており、JavaCompute ノードはさらに MQReply ノードに接続されています。

  10. 新規 JavaCompute ノード用の Java ファイルを作成するには、手順 2、3、および 4 を繰り返します。
  11. MbGlobalMap オブジェクトを使用して、手順 5 で作成したマップを取得してから、手順 6 でマップに追加したデータを取得します。 例えば、取得するデータがストリングであると判明している場合、次の例で示すように、データの取得時にストリングを指定します。
    MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
    ...
    String val = (String)globalMap.get(key);
    次の例に、外部グリッド上のマップに追加したデータを取得する方法を示してあります。
    MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
    ...
    String val = (String)xc10Map.get(key);

    キャッシュが大きくなりすぎるのを防ぐには、キーと値の組の作業が完了した後、remove() メソッドを使ってそのデータをマップから削除します。

    Java コードを構成する際、コンテンツ・アシストを使用して使用可能なオプションをリストすることができます。 コンテンツ・アシストにアクセスするには、挿入ポイントにカーソルを配置し、「編集」 > 「コンテンツ・アシスト」をクリックするか、Ctrl+Space を押します。 例えば、「myMap」と入力して Ctrl+Space を押すと、次のアクションが含まれるオプションのリストから選択できます。
    • remove。グローバル・キャッシュから単一オブジェクトを削除します。
    • containsKey。マップにキーが存在するかどうかを示します。
    • update。既存のオブジェクトを更新します。
    すべての使用可能なオプションが、Java プラグイン API の Javadoc で説明されています (Message Broker Java API を参照してください)。 Java プラグイン API の Javadoc には、「スタート」メニューで「スタート」 > 「プログラム」 > 「IBM WebSphere Message Broker 8.0.0.0」 > 「Java プログラミング API」 > 「Java プラグイン API 文書」を選択してアクセスすることもできます。
  12. メッセージ・フローを保管します。
  13. メッセージ・フローをデプロイします。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:37


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