Specificaţia Java EE indică faptul că bean-urile CMT (container-managed transaction) nu trebuie să acceseze obiectul UserTransaction. Dar, WebLogic suportă căutarea UserTransaction.
Această regulă semnalează următorul tip de cod:
Căutare WebLogic UserTransaction|
UserTransaction xact = ctx.lookup("javax.transaction.UserTransaction"); sau
UserTransaction xact = ctx.lookup("weblogic.transaction.UserTransaction"); |
Accesul la UserTransaction nu este permis în bean-ul în care a fost semnalat. Soluţia dumneavoastră depinde de ce încearcă codul să facă cu UserTransaction. Examinaţi utilizarea UserTransaction pentru a determina cum trebuie modificat codul sau dacă referinţa poate fi înlăturată.
Alternativele la UserTransaction includ utilizarea UOWManager. Căutarea pentru acest manager foloseşte de asemenea o căutare JNDI; de exemplu:
UOWManager Lookup|
UOWManager uowMgr = ctx.lookup("java:comp/websphere/UOWManager"); |
O altă abordare ar putea fi utilizarea interfeţei SessionSynchronization, care vă oferă acces la metodele afterBegin, beforeCompletion şi afterCompletion. Metoda beforeCompletion vă oferă o oportunitate de revenire la versiunea anterioară a tranzacţiei, în cazul unei erori.