2012-05-16 28 views
0

我的應用程序已鎖定數據庫表,因爲JTA沒有用回滾或提交命令完成您的操作。JTA使用weblogic的事務無法按預期工作

該應用程序運行在具有兩臺受管服務器的羣集中的weblogic 10.3上。

對數據庫進行訪問的方法是同步的,其中方法內部的第一部分執行查詢,第二部分調用另一個方法執行合併。此方法具有註釋@Transaction(只讀= false)。

JTA事務由weblogic執行。

我的問題是,根據描述的情況,可能會在數據庫中生成一個鎖?

+0

您是否通過JPA在EJB上訪問數據庫?你的意思是「數據庫訪問的方法是同步的」,所以方法是這樣的。像「公共同步無效myMethod()」? – Korgen

回答

0

在我看來,一個線程問題,其中鎖沒有獲得。

與數據庫訪問的方法syncronized其中方法的內側的第一部分 執行查詢,而第二個呼叫的另一個 方法來執行合併。

檢查兩個方法是否需要兩個不同的鎖,如果是,則會導致死鎖,如果method1中的線程持續等待鎖來訪問method2。

+0

這些方法只調用一個方法,並且在這個方法裏面我調用了dao方法,其中我有@Transacition(readOnly = false)的註釋。 這裏的問題是,如果我有可能得到一個死鎖,爲什麼JTA沒有在30s之後回滾(時間設置)。 另一個問題:我的應用程序有一個同步的方法,weblogic如何管理節點只使用一個託管服務器的情況? – jux

+0

這裏的要點是,是否有可能weblogic失去了JTA控制,並在一瞬間它讓某些連接鎖定在數據庫上?還有一點是:是否有可能weblogic失去了應用程序控制並且不會拋出超時異常? – jux