Sun Java System Application Server Enterprise Edition 8.1 2005Q1 管理ガイド |
第 16 章
トランザクショントランザクションを使用すると、1 つ以上のステップがそれ以上分割不可能な作業単位にまとめられるため、データの完全性と整合性が保証されます。この章には次の節が含まれています。
トランザクションについてトランザクションとは
トランザクションは、すべて正常に完了することが必要なアプリケーションで、周到に用意された一連のアクションです。正常に完了しない場合、各アクションで行われたすべての変更が取り消されます。たとえば、当座預金から普通預金に資金を移動するのは次の手順を実行するトランザクションになります。
これらの手順のいずれが失敗すると、先行する手順によって行われた変更がすべて取り消されます。当座預金口座と普通預金口座はこのトランザクションが始まる前と同じ状態になる必要があります。このイベントはロールバックと呼ばれます。すべての手順が正常に完了すると、トランザクションはコミット状態になります。トランザクションはコミットかロールバックのどちらかで終了します。
J2EE テクノロジのトランザクション
J2EE テクノロジのトランザクション処理には、次の 5 つの関係要素が含まれます。
これらの各エンティティは、次に説明する API や機能を実装することにより、信頼性のあるトランザクション処理を実現しています。
- トランザクションマネージャは、トランザクション境界、トランザクションリソース管理、同期化、およびトランザクションコンテキスト伝達のサポートに必要なサービスと管理機能を提供します。
- アプリケーションサーバーは、トランザクション状態管理を含むアプリケーションランタイム環境のサポートに必要なインフラストラクチャを提供します。
- リソースマネージャは、リソースアダプタを介して、リソースへのアプリケーションアクセスを提供します。トランザクションリソースインタフェースによって実装された分散トランザクション内のリソースマネージャの関係要素が動作します。トランザクションマネージャは、トランザクションリソースインタフェースを使用して、トランザクションの関連付け、トランザクションの完了、およびリカバリと通信します。このようなリソースマネージャの例としては、リレーショナルデータベースサーバーがあります。
- リソースアダプタはシステムレベルのソフトウェアライブラリで、リソースマネージャへ接続するためにアプリケーションサーバーまたはクライアントが使用します。通常、リソースアダプタはリソースマネージャに固有です。リソースアダプタはライブラリとして使用可能で、クライアントのアドレス空間内で使用されます。このようなリソースアダプタの例としては、JDBC ドライバがあります。
- アプリケーションサーバー環境で動作するように開発されたトランザクションユーザーアプリケーションは、JNDI を使用してトランザクションデータソースおよびトランザクションマネージャ (オプション) を検索します。このアプリケーションは、Enterprise JavaBeans の宣言によるトランザクション属性、または明示的なプログラムによるトランザクション境界を使用します。
トランザクションに関する管理コンソールタスクApplication Server は、管理コンソールの設定に基づいてトランザクションを処理します。
トランザクションの設定
この節では、次のトランザクション属性の設定方法を説明します。
トランザクションリカバリ
トランザクションは、サーバークラッシュまたはリソースマネージャクラッシュのいずれかにより未完了になる可能性があります。これらの未完了トランザクションを完了させて障害を回復することは重要です。Application Server はこれらの障害を回復し、サーバーの起動時にそのトランザクションを完了するように設計されています。
リカバリを行っている間にリソースにアクセスできなくなった場合は、トランザクションを回復しようとしてサーバーの再起動が遅れた可能性があります。
トランザクションが複数のサーバーにわたっている場合は、トランザクションを開始したサーバーがトランザクションの結果を取得しようとしてほかのサーバーに問い合わせる場合があります。ほかのサーバーにアクセスできない場合、そのトランザクションは「特殊な結果判別」フィールドを使用してその結果を判別します。
Application Server がトランザクションをリカバリする方法を設定するには、次の手順に従います。
- ツリーコンポーネントで「設定」ノードを選択します。
- 設定するインスタンスを選択します。
- 「トランザクションサービス」ノードを選択します。
- 未完了なトランザクションのリカバリを有効にするには、「再起動時」フィールドで「回復」にチェックマークを付けます。
- 「再試行タイムアウト」フィールドに、Application Server がアクセスできないサーバーに対して接続を試みる時間を秒単位で設定します。デフォルト値は 10 分 (600 秒) です。
- 「特殊な結果判別」フィールドに、トランザクションでアクセスできないサーバーのポリシーを設定します。
このフィールドを「コミット」に設定する適切な理由がないかぎり、「特殊な結果判別」を「ロールバック」のままにしておきます。未確定なトランザクションのコミットは、アプリケーションのデータの整合性を損なう可能性があります。
- 「保存」をクリックします。
- Application Server を再起動します。
トランザクションタイムアウト
デフォルトでは、サーバーはトランザクションをタイムアウトしないようになっています。つまり、サーバーはトランザクションの完了を待機し続けます。トランザクションのタイムアウト値を設定して、トランザクションが設定された時間内に完了しない場合、Application Server はトランザクションをロールバックします。
タイムアウト値を設定するには、次の手順に従います。
トランザクションログ
トランザクションログは、関連リソースのデータの整合性を維持して障害を回復するために、各トランザクションについての情報を記録します。トランザクションログは、「トランザクションログの位置」フィールドで指定したディレクトリの
tx
サブディレクトリに保存されます。これらのログは人間が読み取れるものではありません。トランザクションログの位置を設定するには、次の手順に従います。
- ツリーコンポーネントで、「設定」ノードを選択します。
- 設定するインスタンスを選択します。
- 「トランザクションサービス」ノードを選択します。
- 「トランザクションログの位置」フィールドに、トランザクションログの位置を入力します。
tx
サブディレクトリが作成され、トランザクションログがそのディレクトリの下に保存されます。デフォルト値は
${com.sun.aas.instanceRoot}/logs
です。${com.sun.aas.instanceRoot}
変数はインスタンスの名前であり、Application Server インスタンスの起動時に設定されます。${com.sun.aas.instanceRoot}
の値を参照するには、実際の値をクリックします。- 「保存」をクリックします。
- Application Server を再起動します。
キーポイント処理によって、トランザクションログファイルが圧縮されます。キーポイント間隔は、ログ上のキーポイント処理間のトランザクション数です。キーポイント処理によって、トランザクションログファイルのサイズを小さくすることができます。キーポイント間隔を大きくすると (例: 2048)、トランザクションログファイルが大きくなりますが、キーポイント処理が少なくなるのでパフォーマンスが向上する可能性があります。キーポイント間隔を小さくすると (例: 256)、ログファイルのサイズが小さくなりますが、キーポイント処理が多くなるので、パフォーマンスがわずかに低下します。
キーポイント間隔を設定するには、次の手順に従います。