2011-08-18 27 views
3

我們在基於JPA(Hibernate)的應用程序中使用Infinispan(使用JGroups進行聚集)作爲第二級緩存。當數據庫操作失敗時,我們看到二級緩存已過時。例如:SQL異常導致Hibernate二級緩存與Infinispan作爲提供者陳舊數據

1)嘗試創建一個登錄名爲「joe」的用戶。 2)呼叫堅持(用戶); 3)由於數據庫唯一性約束,persist失敗。 4)通過登錄= joe(假設登錄是PK)在id上查找。 5)Hibernate從Infinispan緩存返回joe用戶,即使數據庫沒有它。

配置XA事務並讓Infinispan參與XA似乎在這種情況下是過度殺傷性的。 XA是解決這個問題的唯一方法嗎?

+0

要關閉此循環,我必須啓用XA(使用Atomikos)使緩存保持同步。 Manik的解決方案不起作用。 –

回答

0

我必須通過部署Atomikos來保持緩存同步來啓用XA事務。其他解決方案不起作用。

相關問題