3

JPA (Hibernate) ベースのアプリケーションの 2 番目のレベルのキャッシュとして Infinispan (JGroups を使用してクラスター化) を使用しています。データベース操作が失敗すると、レベル 2 キャッシュが古くなっていることがわかります。例えば:

1) ログイン「joe」でユーザーの作成を試みます。2) persist(user) を呼び出します。3) データベースの一意性制約により、永続化が失敗します。4) login=joe で ID による検索を実行します (login が PK であると仮定します)。5) Hibernate は、データベースにない場合でも、Infinispan キャッシュから joe ユーザーを返します。

XA トランザクションを構成し、Infinispan を XA に参加させることは、この状況ではやり過ぎのように思えます。XA がこれに対処する唯一の方法ですか?

4

2 に答える 2

2

XAよりもはるかに安価なトランザクション同期を有効にします。

詳細については、 http://infinispan.blogspot.com/2011/06/faster-infinispan-based-second-level.htmlを参照してください。

于 2011-08-24T09:09:05.277 に答える
0

キャッシュの同期を維持するために、Atomikos をデプロイして XA トランザクションを有効にする必要がありました。他の解決策は機能しませんでした。

于 2012-07-31T19:58:21.553 に答える