Nu utilizaţi interfaţa UserTransaction de la bean-urile CMT

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
< span class="Code"> < span class= "JavaType" >UserTransaction< /span> xact = ctx.lookup("javax.transaction.UserTransaction");

sau

< span class="Code"> < span class= "JavaType" >UserTransaction< /span> 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

< span class="Code"> < span class= "JavaType" > UOWManager < /span> 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.