WebSphere Application Server - Express, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

トランザクション・タイプおよび接続の振る舞い

すべての接続の使用は、グローバル・トランザクションまたはローカル・トランザクション内包 (LTC) 境界のいずれかの有効範囲内で起きます。 トランザクション・タイプごとに、接続に関する要件が異なり、接続の設定に及ぼす影響も異なります。

接続の共用と再利用

接続は、グローバル・トランザクションの有効範囲内でのみ共用できます (その他の共用規則に従っていることが前提です)。ただし、LTC 有効範囲内での接続は、逐次的に再利用 できます。 取得/使用/クローズという接続パターンの後に (同じデータ・ソースまたは接続ファクトリーに対して) 別の取得/使用/クローズを行う場合は、同じ接続を再利用できます。 詳しくは、共用不可能接続および共用可能接続 のトピックを参照してください。

JDBC AutoCommit の振る舞い

すべての JDBC 接続は、getConnection 呼び出しで最初に取得されたときに、デフォルトの AutoCommit=TRUE 設定となっています。 ただし、トランザクション有効範囲と設定が異なる場合は、 結果として AutoCommit の値が変更されたり、単にオーバーライドされたりします。
  • LTC 内で操作を行い、 その resolution-control が Application に設定されている場合、 AutoCommit は、アプリケーションによって変更されない限り TRUE のままです。
  • LTC 内で操作を行い、 resolution-control が ContainerAtBoundary に設定されている場合、 アプリケーションが AutoCommit 設定を変更しないようにしてください。 WebSphere Application Server ランタイムは、作業開始前に AutoCommit 値を FALSE に設定し、 LTC 有効範囲の終わりで必要に応じて作業をコミットまたはロールバックします。
  • グローバル・トランザクション内で接続を使用する場合、AutoCommit 設定はデータベースによって無視されます。こうすると、コミットおよびロールバック処理を制御するトランザクション・サービスが、トランザクションを管理できるようになります。 このアクションは、ユーザーによる AutoCommit 設定の変更に関係なく、接続を使用して最初に作業を実行する際に行われます。トランザクション完了後、AutoCommit 値は、 接続を初めて使用する前の値に戻されます。 そのため、接続がグローバル・トランザクションで使用される前に AutoCommit 値が TRUE に設定されている場合でも、 この値は、データベースによって無視されるため、FALSE に設定する必要はありません。 この例では、接続の AutoCommit 値は、 トランザクション完了後に TRUE に戻されます。
  • グローバル・トランザクション内で異なる接続を複数使用する場合、 すべての作業は、必ず一緒にコミットまたはロールバックされます。 これはローカル・トランザクション内包 (LTC 有効範囲) の場合には当てはまりません。 LTC では、 ある接続で実行される作業は、LTC 内のその他のどの接続で実行される作業とも無関係にコミットしたりロールバックしたりします。

1 フェーズ・コミットおよび 2 フェーズ・コミット接続

たいていの場合、アプリケーションでアクセスする必要があるリソース・マネージャー (データベース・マネージャーなど) のタイプと数によって、 アプリケーション・トランザクションの要件が決まります。 したがって、リソース・マネージャーごとに、接続の振る舞いに関する要件が異なります。
  • 2 フェーズ・コミット・リソース・マネージャーは、トランザクションの 2 フェーズ調整をサポートすることができます。 このサポートは、ほかのリソース・マネージャーに関係するトランザクションに必要です。 これらのトランザクションは、グローバル・トランザクションです。 詳しくは、WebSphere Application Server でのトランザクション・サポート を参照してください。
  • 1 フェーズ・コミット・リソース・マネージャーは、1 フェーズ・トランザクションまたは LTC トランザクションのみをサポートします。 この場合、そのリソースは参加している唯一のデータ・ストアです。 詳しくは、WebSphere Application Server でのトランザクション・サポート を参照してください。

1 フェーズ・コミット・リソースでは、 1 フェーズ接続で実行される作業は他の接続と一緒にできず、 すべての接続で実行される作業は、必ずアトミックに完了または失敗します。 この製品では、 グローバル・トランザクションにおいて、複数の 1 フェーズ・コミット接続を使用できません。 さらに、 この製品は、1 つ以上の 2 フェーズ・コミット接続を行っているグローバル・トランザクションでは、 1 フェーズ・コミット接続を使用できません。 グローバル・トランザクション内では、 複数の 2 フェーズ・コミット接続のみ調整できます。

WebSphere Application Server は、最終参加者サポート を提供しています。 これにより、1 つ以上の 2 フェーズ・コミット・リソースを使用するグローバル・トランザクションに単一の 1 フェーズ・コミット・リソースが加えられるようになります。

res-sharing-scope=Unshareable と指定したリソース参照を使用して複数の getConnection 呼び出しを実行すると、必ず複数の物理接続を取得することになるので、注意してください。 この状態は、res-sharing-scope=Shareable の場合にも起こりますが、共用規則違反です。 いずれの場合も、 グローバル・トランザクションで実行している場合は、 関係するリソースが必ず 2 フェーズ・コミットで使用可能になるようにしてください (JTA 使用可能化 と呼ばれる場合もあります)。 これを行わないと、XA 例外となります。 その場合は、次のようなメッセージがログに記録されます。
WTRN0063E: 既存の 2 フェーズ可能リソースがあり、1 フェーズ可能リソースを取得しようとする不正な
試みが行われました。



関連概念
データ・ソース
共用不可能接続および共用可能接続
接続ハンドル
据え置き enlist
関連タスク
トランザクション・サービスの使用
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 6:25:35 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/cdat_codatc.html