4

JTAの仕様から、スレッドを呼び出す場合にのみ分散トランザクションが機能する(またはサポートされる)ことを理解しています。これは、トランザクションが複数のスレッドにまたがることができないことを意味しますか?それとも実装に依存しますか?

スレッド間でXAをサポートするJTA実装はありますか?

ありがとう!

4

2 に答える 2

6

最初のスレッドでTransactionManager のgetTransaction()を使用し、他のスレッドでresume()を使用して、同じトランザクションを複数のスレッドにまたがるか、またはsuspend() / resume()を使用してトランザクションを別のスレッドに移動できます。

この機能がサポートされているかどうかは、特定のトランザクション マネージャーの実装に依存します。これがサポートされる可能性は十分にあります。たとえば、同じトランザクションを複数の Bean (異なるワーク マネージャーで実行されている可能性があります) に渡して渡す必要がある場合や、アプリ サーバーが複数の VM にまたがってトランザクションをスパンする必要がある場合に、このような機能が必要になるためです。クラスターで実行されています (この場合、おそらく特定のトランザクション マネージャーの実装を実際に掘り下げるか、アプリケーション サーバーに宿題をさせる必要があります)。

于 2012-09-25T08:48:53.883 に答える