アプリケーションは、JDBC データ・ソースまたは接続ファクトリーなどのリソースを使用します。 これらのリソースは、WebSphere Application Server 管理コンソールの「リソース」ビューを介して構成されます。 これらのリソースがどのようにしてグローバル・トランザクションに参加するかは、 基礎となるリソース・プロバイダーのトランザクション・サポートによって異なります。
例えば、ほとんどの JDBC プロバイダーは、XA または XA 以外のいずれかの バージョンのデータ・ソースを提供できます。 非 XA データ・ソースは、リソース・マネージャー・ローカル・トランザクション (RMLT) しか サポートできませんが、XA データ・ソースは、ローカル・トランザクションに加え、2 フェーズ・コミット調整を サポートできます。
さらに、 JDBC プロバイダーには、
トランザクション処理を調整する z/OS Resource Recovery Service (RRS) の
使用をサポートするものもあります。
このタイプの JDBC プロバイダーは、RRSTransactional です。RRS を
使用する際は、ローカル・トランザクションとグローバル・トランザクションのどちらもサポートします。
RMLT
のみをサポートする 2 つ以上のリソース・プロバイダーをアプリケーションで使用する場合、
これらのリソースは本来 1 フェーズであるため、アトミシティは保証されません。
アトミックな動作を保証するために、アプリケーションは、XA 調整または RRS 調整を
サポートするリソースを使用し、グローバル・トランザクション内で
それらのリソースにアクセスする必要があります。
RMLT のみをサポートする 2 つ以上のリソース・プロバイダーを
アプリケーションで使用する場合、
これらのリソースは本来 1 フェーズであるため、アトミシティは保証されません。
アトミックな動作を保証するために、アプリケーションは、XA 調整をサポートするリソースを使用し、
グローバル・トランザクション内でそれらのリソースにアクセスする必要があります。
アプリケーションが RMLT を 1 つしか使用しない場合は、 アトミックな動作は、ローカル・トランザクション内包 (LTC) コンテキストのもとでアクセスできるリソース・マネージャーにより保証されます。
リソース・マネージャーが XA 調整をサポートしない場合であっても、 グローバル・トランザクション・コンテキストのもとで単一のリソース・マネージャーにアクセスすることもできます。 アプリケーションがこれを行うことができるのは、 WebSphere Application Server が「リソースのみの最適化」を行い、RMLT のもとでリソース・マネージャーと対話するためです。グローバル・トランザクション・コンテキスト内で、 RMLT のみをサポートするリソース・プロバイダーを 1 つより多く使用しようとすると、 グローバル・トランザクションはロールバックされます。
どのようなときでも、エンタープライズ Bean のインスタンスには、 グローバル・トランザクション・コンテキストか LTC コンテキストのいずれかに未解決の作業がある場合があります。 ただし、その両方のコンテキストでそのような作業があることはありません。 元のコンテキストにおける未解決の作業がすべて完了した場合、 エンタープライズ Bean のインスタンスの実行場所が、 一方のタイプのコンテキストから別のタイプのコンテキストへと、 (いずれの方向でも) 変更することがあります。 この原則に反すると、 エンタープライズ Bean が新規コンテキストを開始しようとするときに、例外がスローされます。