不要使用來自 CMT Bean 的 UserTransaction 介面

Java EE 規格會指示儲存器管理交易 (CMT) Bean 可能無法存取 UserTransaction 物件。不過,WebLogic 支援 UserTransaction 查閱。

此規則會標示下列程式碼類型:

WebLogic UserTransaction 查閱
UserTransaction xact = ctx.lookup("javax.transaction.UserTransaction");

UserTransaction xact = ctx.lookup("weblogic.transaction.UserTransaction");

在正在標示的 Bean 中,不容許存取 UserTransaction。 解決方案視程式碼要嘗試使用 UserTransaction 來執行的內容而定。 請檢查 UserTransaction 的使用情形,判斷必須如何變更程式碼,或是否可以移除參照。

UserTransaction 的替代方案包括使用 UOWManager。 此管理程式的查閱還使用 JNDI 查閱;例如:

UOWManager 查閱

UOWManager uowMgr = ctx.lookup("java:comp/websphere/UOWManager");

另一種可能的方法是使用 SessionSynchronization 介面,該介面容許您存取 afterBegin、beforeCompletion 和 afterCompletion 方法。 beforeCompletion 方法可讓您在發生錯誤的情況下,回復至舊版交易。