我有一个非常基本的JTA问题。
我们正在使用Spring的AOP将WebLogicJtaTransactionManager切入点应用于服务类中的任何方法......我们设置tx:method timeout =“60”。
有趣的是在该服务中,我们运行一个select语句来从数据库中检索记录(使用Hibernate / JPA),然后去做一些与数据库/事务无关的工作。该方法运行时间超过60秒,永远不会抛出超时异常,并且永远不会回滚事务。我们不会更新或创建要保留的新对象。
除此之外,我们已将JTA配置为在WebLogic Server上180秒后超时...且应用程序仍未超时。
WLS文档说“事务超时以秒为单位。如果事务在此时间之后仍处于”活动“状态(从begin()开始计算),则会自动回滚。一旦事务转移到准备好的状态但是,此超时参数不适用;重试事务,直到提交所有资源。“
这种行为是否与JTA没有任何提交事实有关,因此超时不一定适用?
或者它是否与以下事实相关:因为没有真正的数据库(插入/更新/删除)所以事务永远不会处于真正的活动状态?
答案 0 :(得分:0)
JTA事务超时仅适用于基于XA的数据源。您能否确认数据源是使用XA数据库驱动程序设置的?