Ne pas utiliser l'interface UserTransaction depuis des beans CMT

Selon la spécification Java EE, les beans de transaction gérée par conteneur (CMT) ne peuvent pas accéder à l'objet UserTransaction. Toutefois, WebLogic prend en charge la recherche de l'objet UserTransaction.

Cette règle marque le type de code suivant :

Recherche de UserTransaction dans WebLogic
< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("javax.transaction.UserTransaction") ;

ou

< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("weblogic.transaction.UserTransaction") ;

L'accès à l'objet UserTransaction est interdit dans le bean lorsqu'il est marqué. La solution varie selon l'objectif du code avec l'objet UserTransaction. Examinez l'utilisation de l'objet UserTransaction pour déterminer comment modifier le code ou si vous pouvez retirer la référence.

Au lieu de l'objet UserTransaction, vous pouvez utiliser le gestionnaire UOWManager. La recherche avec ce gestionnaire implique également une recherche JNDI. Par exemple :

Recherche UOWManager

< span class="Code"> < span class= "JavaType"> UOWManager < /span> uowMgr = ctx.lookup(" java:comp/websphere/UOWManager ") ;

Il existe une autre approche qui consiste à utiliser l'interface SessionSynchronization, qui donne accès aux méthodes afterBegin, beforeCompletion et afterCompletion. La méthode beforeCompletion vous permet de rétablir la version précédente de la transaction en cas d'erreur.