3.5.5.5. トランザクションリカバリーの例
以下の例は、お金がデータベースに格納された口座から JBoss Data Grid に格納された口座に転送される状況でどのようにトランザクションが使用されるかを示しています。
例3.4 データベースに格納された口座から JBoss Data Grid 内の口座への送金
- 送信元 (データベース) と送信先 (JBoss Data Grid) リソース間の 2 フェーズコミットプロトコルを実行するために、
TransactionManager.commit()
メソッドが呼び出されます。 TransactionManager
が、準備フェーズ (2 フェーズコミットの最初のフェーズ) を開始するようデータベースと JBoss Data Grid に指示します。
コミットフェーズ中、データベースは変更を適用しますが、JBoss Data Grid はトランザクションマネージャーのコミット要求を受け取る前に失敗します。結果として、不完全なトランザクションのため、システムは不整合な状態になります。特に、送金される金額はデータベースから引かれますが、準備された変更を適用できないため、JBoss Data Grid に表示されません。
ここでは、トランザクションリカバリーは、データベースと JBoss Data Grid エントリー間の不整合を調整するために使用されます。