2012-06-08 17 views
0

我們的應用程序是一個廣泛使用Guice-Persist和Guice-Servlet的Java-GWT應用程序。我們使用Guice-Persist的session-per-HTTPRequest功能從未遇到過類似於Warp-persist最初使用的問題。Guice-Persist - 「在這個線程中已經開始工作了,看起來你已經調用了UnitOfWork.begin()兩次,沒有一個平衡調用來結束end()。」

我們正按照文檔通過PersistFilter類過濾我們的webapp。根據Guice文檔here,我們的persistence.xml文件具有transaction-type =「RESOURCE_LOCAL」。

現在對於一些奇怪的原因,我們PROD環境中顯示錯誤

「工作已經開始在此線程。看起來你已經調用UnitOfWork.begin()沒有一個平衡的呼叫結束()之間的兩倍。 「

enter image description here

它看起來像有在這裏工作的嵌套的單位不是在吉斯 - 堅持支持的問題。 LINK

我們最近也從hibernate 3.6.3.Final移到了4.1.4.Final。不知道他是否會有一些與guice不兼容...

在這一點上,我們完全處於黑暗中,爲什麼會發生這種情況。

回答

3

由於我忘記將@Transaction註釋添加到最外層邏輯事務大括號中,因此我在Hibernate隱式打開事務時遇到了這種症狀。

爲了查明問題,在數據庫層以及begin()和end()中設置斷點,以便在沒有現有事務的情況下執行持久性(讀取或寫入無關緊要)的情況。

相關問題