Springの分散式事務は、XA-1を使用しますか?


原文のリンク:
http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html?page=1
SpringではJTAやXAプロトコルを使って分散的な事務を行うことが多いですが、他のオプションもあります.最適な実装は、どのような種類のリソースを使用するかによって、性能、安全、信頼性、データの完全性の間でどのように評価されます.このシリーズでは、SpringSourceからのDavid SyerがSpringアプリケーションで使用できる7つの分散型事務モードを詳細に説明します.そのうち3つはXAを使用し、4つはXAを使用しません.
レベル:中級
Springフレームワークは、J 2 EE容器を実行していない場合に、分散型トランザクションとXAプロトコルを使用することができるように、JTA(Javaトランザクションアプリケーションインターフェース、Java Transation API)をサポートする.それでも、XAは管理者にとっては依然として高価であり、信頼できない、あるいは重いかもしれない.初めて体験した驚きをもたらすかもしれませんが、結局は多くの種類の応用が避けられます.
分散式事務を実現するための様々な方法を理解するために、7つの分散式事務処理モードを分析し、具体的なモデルコードを提供します.安全性と信頼性が高い方法で一つ一つ表現します.データの完全性と原子性を最大限に保証する方法から始まります.順番に読んでいくと、注意事項や使用制限が増えてきます.また、これらのモードも基本的に運行コストによって逆さまに配置されています.これらのモードはすべてアーキテクチャまたは技術モードであり、業務モードではないので、具体的な業務には関心がなく、各モードがどのように働くかを説明する短いコードを提供するだけです.
最初の3つのモードだけがXAを使用していますが、これらは性能のために適切ではないか、あるいは受け入れられないかもしれません.XAモードは他の文章で十分に議論されているので、拡張しません.最初のモードで簡単なモデルコードを提供していますが.この文章を読むことによって、あなたは分散的な仕事で何ができますか?何をしてはいけませんか?また、いつXAを使うのを避けるべきですか?また、どのような状況でXAを使うべきですか?
分散式事務と原子性
分散型事務とは、複数の事務リソースを含む事務をいう.事務リソースとは、例えば、関係データベースとメッセージの間に通信するコネクタのことです.通常、このようなリソースは、begin()rollback()commit()などのいくつかのAPIを提供している.Javaプログラミングでは、事務リソースは、基本的に、下のプラットフォームによって提供される工場製品として表される.データベースにとって、DataSourceによって生成される接続、またはJava Persistence API(JPA)EntityManagerである.Java Message Service(JMS)にとって、セッションである(Session).
典型的な一例として、JMSメッセージはデータベース更新をトリガする.成功的なインタラクションシーケンスは以下の通りである.
  • メッセージトランザクションを開始します.
  • メッセージを取得する
  • データベース事務を開始する
  • データベースを更新する
  • データベース事務を提出する
  • メッセージトランザクションを提出する
  • もしデータベースエラーが更新時の制約競合などの場合、理想的なインタラクションシーケンスは次のように見えます.
    by iefreer