2011-07-14 39 views
0

は:TransactionSynchronizationRegistryの目的は何ですか? JTA仕様によれば

このインタフェースは、システムレベルのアプリケーションサーバこのような永続性マネージャ、リソースアダプタなど 成分、ならびに としてEJBおよびWebアプリケーションコンポーネントによる使用のために意図されています。これにより、 同期オブジェクトを特別な順序付けセマンティクスで登録でき、 リソースオブジェクトを現在のトランザクションに関連付けることができ、現在のトランザクションの トランザクション状態を取得し、現在のトランザクションにロールバックをマークすることができます。

また:

のgetResourceのユーザ()とputResource()メソッドは 発呼者に代わってトランザクション固有のデータを管理するライブラリ 成分です。呼び出し元によって提供されたトランザクション固有のデータは、 ではなく、すぐにトランザクションに登録されたリソースにフラッシュされますが、代わりに がキャッシュされます。キャッシュされたデータは、呼び出し側のトランザクションコンテキスト と0対1の関係にあるトランザクション関連データ 構造体に格納されます。

しかし、私はまだ困惑しています。

まず、「[...]は同期オブジェクトを特別な順序付けセマンティクスで登録する機能を提供します」とはどういう意味で、順序付けをセットアップすることは可能ですか?

次に、「リソースオブジェクトを現在のトランザクションに関連付ける」必要があるユースケースは何ですか?

答えて

3

何まず、「[...]特別注文セマンティクスで 同期オブジェクトを登録する機能を提供します」を意味し、どのよう それは順序設定することは可能ですか?

「特別注文のセマンティクス」は、registerInterposedSynchronization javadocで説明されています。これは、これらのリスナーがTransaction.registerSynchronizationに対してどのように起動されるかを説明しようとしています。

次に、「 リソースオブジェクトを現在のトランザクションに関連付ける」必要がある使用例はありますか?

putResource/getResourceは、呼び出し元に "トランザクションローカル"オブジェクトを格納させます。

たとえば、JPAコンテナは、使用時にregisterInterposedSynchronizationを登録することがあります。ステートフルセッションBeanは、SessionSynchronization.beforeCompletion中にエンティティを更新することがあります。 EntityManagerは、putResourceを使用して現在のトランザクションにエンティティを格納し、その後に実行することが保証されているSynchronization.beforeCompletion中にデータをデータベースにフラッシュします。

関連する問題