Согласно спецификации Java EE, EJB управляемых контейнером транзакций (CMT) не могут обращаться к объекту UserTransaction. Однако WebLogic поддерживает поиск UserTransaction.
Данное правило отмечает фрагменты кода следующего типа:
WebLogic UserTransaction Lookup
< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("weblogic.transaction.UserTransaction");
В EJB с отмеченным кодом нельзя обращаться к UserTransaction. Решение зависит от того, какая операция с UserTransaction выполняется в коде. Изучите, для чего используется UserTransaction, и измените код соответствующим образом или удалите ссылку.
Вместо UserTransaction можно использовать UOWManager. При обращении к этому объекту также используется операция поиска JNDI, например:
Поиск UOWManagerДругой альтернативой может стать использование интерфейса SessionSynchronization, открывающего доступ к методам afterBegin, beforeCompletion и afterCompletion. Метод beforeCompletion позволяет вернуться к предыдущей версии транзакции в случае ошибки.