異なる層間、または混合プラットフォーム上の環境間で、トランザクションの変更を配布するために Java Message Service (JMS) を使用します。
JMS は、異なる層または混合しているプラットフォームの環境で配布された変更に理想的なプロトコルです。 例えば、eXtreme Scale を使用するいくつかのアプリケーションが、IBM® WebSphere® Application Server Community Edition、Apache Geronimo、または Apache Tomcat にデプロイされていて、 別のアプリケーションが WebSphere Application Server バージョン 6.x で 実行しているとします。このような多様な環境における eXtreme Scale ピア間で配布される変更 には、JMS が理想的です。HA マネージャーのメッセージ・トランスポートは非常に高速ですが、 単一コア・グループに属する Java 仮想マシン にのみ変更を配布できます。 JMS はそれに比較すれば低速ですが、より広範囲で、多様なアプリケーション・クライアントのセットに ObjectGrid を共有させることができます。 JMS は、ファット Swing クライアントと、 WebSphere Extended Deployment に デプロイされているアプリケーションとの間で、ObjectGrid 内のデータを共有する場合に理想的です。
JMS を使用したトランザクションの変更の配布の例としては、組み込みのクライアント無効化メカニズムやピアツーピア・レプリカ生成メカニズムなどがあります。詳しくは、クライアント無効化メカニズムの使用可能化および JMS を使用したピアツーピア・レプリカ生成の構成を参照してください。
プラグインは、ObjectGridEventListener インターフェースを実装し、transactionEnd イベントをインターセプトします。 eXtreme Scale がこのメソッドを呼び出す場合、プラグインはトランザクションによってタッチされる各マップの LogSequence リストを JMS メッセージに変換し、それをパブリッシュしようとします。 プラグインは、すべてのマップまたはマップのサブセットの変更をパブリッシュするよう構成することができます。 LogSequence オブジェクトは、パブリッシュが使用可能なマップのために処理されます。 LogSequenceTransformer ObjectGrid クラスは、ストリームに対して各マップのフィルタリングされた LogSequence をシリアライズします。 すべての LogSequences がストリームにシリアライズされたら、JMS ObjectMessage が作成され、既知のトピックにパブリッシュされます。
同じプラグインはまた、既知のトピックにパブリッシュされるすべてのメッセージを受け取りながら、ループでスピンするスレッドを開始します。 メッセージを受け取ると、LogSequenceTransformer クラスにメッセージ・コンテンツを渡します。 このクラスでメッセージ・コンテンツは LogSequence オブジェクトのセットに変換されます。その後、ノー・ライトスルー・トランザクションが開始されます。各 LogSequence オブジェクトは Session.processLogSequence メソッドに提供され、その変更でローカル Map を更新します。 processLogSequence メソッドは、配布モードを理解しています。トランザクションはコミットされ、ローカル・キャッシュが変更を反映します。 JMS を使用してトランザクションの変更を配布する方法について詳しくは、ピア JVM 間の変更の配布を参照してください。