Não usar a interface UserTransaction de beans de CMT

A especificação Java EE indica que os beans de transação gerenciada por contêiner (CMT) podem não acessar o objeto UserTransaction. Todavia, o WebLogic suporta a consulta UserTransaction.

Esta regrasinaliza o tipo de código a seguir:

Consulta de UserTransaction do WebLogic
UserTransaction xact = ctx.lookup("javax.transaction.UserTransaction");

ou

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

O acesso ao UserTransaction não é permitido no bean em que ele está sendo sinalizado. Sua solução depende do que o código está tentando fazer com a UserTransaction. Examine o uso de UserTransaction para determinar como o código deve ser alterado ou se a referência pode ser removida.

Alternativas à UserTransaction incluem o UOWManager. A consulta para esse gerenciador também utiliza uma consulta da JNDI como, por exemplo:

Consulta do UOWManager

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

Outra abordagem pode ser utilizar a interface SessionSynchronization, que lhe dá acesso aos métodos afterBegin, beforeCompletion e afterCompletion. O método beforeCompletion lhe oferece uma oportunidade de reverter para a versão anterior da transação, no caso de um erro.