Specyfikacja standardu Java EE wskazuje, że komponenty bean transakcji zarządzanych przez kontener (Container-Managed Transaction – CMT) mogą nie mieć dostępu do obiektu UserTransaction. Jednak serwer WebLogic obsługuje wyszukiwanie obiektu UserTransaction.
Ta reguła oznacza kod następującego typu:
Wyszukiwanie obiektu UserTransaction produktu WebLogic|
UserTransaction xact = ctx.lookup("javax.transaction.UserTransaction"); lub
UserTransaction xact = ctx.lookup("weblogic.transaction.UserTransaction"); |
Dostęp do obiektu UserTransaction jest niedozwolony w komponencie bean, w którym jest on oznaczany. Rozwiązanie zależy od tego, jakie działania próbuje wykonać kod w odniesieniu do obiektu UserTransaction. Należy sprawdzić użycia obiektu UserTransaction, aby określić, jak należy zmienić kod lub czy można usunąć odwołanie.
Jedną z alternatyw dla używania obiektu UserTransaction jest używanie interfejsu UOWManager. Działanie wyszukiwania tego menedżera obejmuje także wyszukiwanie JNDI, na przykład:
Wyszukiwanie interfejsu UOWManager|
UOWManager uowMgr = ctx.lookup("java:comp/websphere/UOWManager"); |
Inne możliwe podejście to użycie interfejsu SessionSynchronization, który udostępnia metody afterBegin, beforeCompletion i afterCompletion. Metoda beforeCompletion umożliwia przywrócenie poprzedniej wersji transakcji w razie wystąpienia błędu.