1

複数の EAR と同じトランザクションを処理するためのベスト プラクティスは何ですか。しかし、明らかに私たちが取り組んできた Currents プロジェクトでは、これは作成と更新に厳密には必要ありません。ただし、エンティティからコレクションを取得しようとすると、アクティブなトランザクションがないか、閉じられているというエラーが表示されますが、Ear A でエンティティ A を更新し、Ear B でエンティティ B を更新すると、エンティティ A が完全に機能します。エンティティ B には異なるデータソースがあります。この時点では、まだ xa データソースを構成していないため、この点について非常に混乱しています。これを処理するための最良の方法は何ですか。トランザクションはコンテナーではなく Bean によって処理され、データソースは EAR A と EAR B で異なります

4

1 に答える 1

1

単一のトランザクションで複数のリソース (データベース、JMS リソース、JCA コネクタ) を操作する場合は、XA トランザクション (「グローバル トランザクション」とも呼ばれます) が必要です。XA トランザクションには、 two-phase commit (2PC) protocol. XA の詳細については、Mike Spille による素晴らしいXA Exposedの投稿を参照してください。

(...) Ear A でエンティティ A を更新し、Ear B でエンティティ B を更新すると、エンティティ A とエンティティ B のデータソースが異なる場合に完全に機能します

その更新をどのように実行しますか (つまり、どこから)? 「それが機能する」とは正確に何を意味しますか?問題が発生した場合に備えて、両方の更新がロールバックされていますか? グローバル トランザクションを使用しなければ、そうであるとは驚きです。これを少し明確にしてもらえますか?

于 2009-12-14T22:10:53.453 に答える