2 フェーズ・コミット・トランザクション

2 フェーズ・コミット (XA) トランザクションは、クラウド・プラットフォームの Liberty では使用可能になっていません。 デフォルトでは、Liberty トランザクション・マネージャーが、トランザクション・ログ・ファイルをローカル・ファイル・システムに書き込みます。 ローカル・ファイル・システムはクラウド・プラットフォームでは一時的であるため、 トランザクション・ログ・ファイルは、アプリケーションまたは Java 仮想マシンが破損すると使用できなくなります。 トランザクション・ログの保管にデータベース・サービスを使用するようにトランザクション・マネージャーを構成できますが、クラウド・プラットフォームはアプリケーションの破損後にアプリケーションのまったく新しいインスタンスを自動的に作成します。 そのため、トランザクション・マネージャーは、失敗したインスタンスのトランザクションを復旧するためにどのログを使用するのかを特定できません。

デフォルトでは、Enterprise JavaBeans (EJB) Bean はコンテナー管理対象であり、Required トランザクション属性が設定されます。これは JTA トランザクションを使用することを意味します。 単一リソースのみが関係する JTA トランザクションは完全にサポートされます。 複数のリソースに及ぶ JTA トランザクションでは、サポート対象外の 2 フェーズ・コミットが必要になります。 この規則により、ejb-jar.xml ファイルと、javax.ejb パッケージへの参照を持つ Java コードにフラグを立てます。 この規則は、javax.transaction に関連する Java コードにフラグを立っています。UserTransaction class. アプリケーションが XA トランザクションを使用するかどうかをチェックし、XA トランザクションが存在する場合は削除してください。

Java コードでは、以下の明示的アノテーションが JTA トランザクションの使用を示します。

ejb-jar.xml ファイル内では、以下の明示的エレメントが JTA トランザクションの使用を示します。

注: アプリケーションがjavax.transactionを使用しない場合。ユーザー・トランザクション クラス、およびすべての アプリケーション EJB Bean は Bean 管理されているか、「Never」または「NotSupported」のトランザクション属性 でコンテナー管理されています。アプリケーションは XA トランザクションを使用せずに、この 規則のフラグ設定は無視されます。

以下の明示的アノテーションまたはエレメントは、EJB Bean が XA トランザクションを使用しないことを示します。