Sun Java System Application Server Enterprise Edition 8.2 管理ガイド

第 11 章 トランザクション

トランザクションを使用すると、1 つ以上のステップがそれ以上分割不可能な作業単位にまとめられるため、データの完全性と整合性が保証されます。この章の内容は次のとおりです。

トランザクションとは

トランザクションは、すべて正常に完了することが必要なアプリケーションで、周到に用意された一連のアクションです。正常に完了しない場合、各アクションで行われたすべての変更が取り消されます。たとえば、当座預金から普通預金に資金を移動するのは次の手順を実行するトランザクションになります。

  1. 当座預金口座にその移動をカバーするだけの金額があるかどうかを確認します。

  2. 当座預金に十分なお金が入っている場合は、当座預金の金額を借り方に記帳します。

  3. その金額を普通預金口座の貸し方に記帳します。

  4. その移動を当座預金口座ログに記録します。

  5. その移動を普通預金口座ログに記録します。

これらの手順のいずれが失敗すると、先行する手順によって行われた変更がすべて取り消されます。当座預金口座と普通預金口座はこのトランザクションが始まる前と同じ状態になる必要があります。このイベントは「ロールバック」と呼ばれます。すべての手順が正常に完了すると、トランザクションは「コミット」状態になります。 トランザクションはコミットかロールバックのどちらかで終了します。

J2EE テクノロジのトランザクション

J2EE テクノロジのトランザクション処理には、次の 5 つの関係要素が含まれます。

これらの各エンティティーは、次に説明する API や機能を実装することにより、信頼性のあるトランザクション処理を実現しています。

トランザクションの回復

トランザクションは、サーバークラッシュまたはリソースマネージャークラッシュのいずれかにより未完了になる可能性があります。これらの未完了トランザクションを完了させ、障害を回復させる必要があります。Application Server は、これらの障害を回復し、サーバーの起動時にそのトランザクションを完了するように設計されています。

リカバリを行っている間にリソースにアクセスできなくなった場合は、トランザクションを回復しようとしてサーバーの再起動が遅れた可能性があります。

トランザクションが複数のサーバーにわたっている場合は、トランザクションを開始したサーバーがトランザクションの結果を取得しようとしてほかのサーバーに問い合わせる場合があります。ほかのサーバーにアクセスできない場合、そのトランザクションは「特殊な結果判別」フィールドを使用してその結果を判別します。

管理コンソールを使用して、トランザクションを回復するようにApplication Server を設定できます。この作業の詳細な手順については、管理コンソールのオンラインヘルプを参照してください。

トランザクションのタイムアウト値

デフォルトでは、サーバーはトランザクションをタイムアウトしないようになっています。つまり、サーバーはトランザクションの完了を待機し続けます。トランザクションのタイムアウト値を設定して、トランザクションが設定された時間内に完了しない場合、Application Server はトランザクションをロールバックします。この作業の詳細な手順については、管理コンソールのオンラインヘルプを参照してください。

トランザクションログ

トランザクションログは、関連リソースのデータの整合性を維持して障害を回復するために、各トランザクションについての情報を記録します。トランザクションログは、「トランザクションログの位置」フィールドで指定したディレクトリの tx サブディレクトリに保存されます。これらのログは人間が読み取れるものではありません。

キーポイント間隔

キーポイント処理によって、トランザクションログファイルが圧縮されます。キーポイント間隔とは、ログに対して実行されるキーポイント処理の間のトランザクション数のことです。キーポイント処理によって、トランザクションログファイルのサイズを小さくすることができます。キーポイント間隔を大きくすると (例: 2048)、トランザクションログファイルが大きくなりますが、キーポイント処理が少なくなるのでパフォーマンスが向上する可能性があります。キーポイント間隔を小さくすると (例: 256)、ログファイルのサイズが小さくなりますが、キーポイント処理が多くなるので、パフォーマンスがわずかに低下します。