Java EE 规范表明,容器管理的事务 (CMT) Bean 不能访问 UserTransaction 对象。但是,WebLogic 支持 UserTransaction 查询。
此规则标记以下类型代码:
WebLogic UserTransaction 查询
UserTransaction xact = ctx.lookup("weblogic.transaction.UserTransaction");
对于正在其中标记 UserTransaction 的 bean,不允许在该 Bean 中访问 UserTransaction。 解决方案取决于代码尝试通过 UserTransaction 执行的操作。 请检查是否使用了 UserTransaction,以确定必须如何更改代码,或者确定是否可以除去该引用。
用来替代 UserTransaction 的备选方法包含使用 UOWManager。 针对此管理器的查询还使用 JNDI 查询;例如:
UOWManager 查询另一方法可能是使用 SessionSynchronization 接口,它允许您访问 afterBegin、beforeCompletion 和 afterCompletion 方法。 方法 beforeCompletion 使您能够在遇到错误时恢复至事务的先前版本。