0

我有一个非常基本的 JTA 问题。

我们正在使用 Spring 的 AOP 在服务类中的任何方法上应用 WebLogicJtaTransactionManager 切入点……并且我们设置了 tx:method timeout="60"。

有趣的是在该服务中,我们运行一个 select 语句从数据库中检索记录(使用 Hibernate/JPA),然后去做一些与数据库/事务无关的工作。该方法运行时间超过 60 秒,并且永远不会抛出超时异常,并且永远不会回滚事务。我们不会更新或创建新对象来持久化。

除此之外,我们将 JTA 配置为在 WebLogic Server 上 180 秒后超时......并且应用程序仍然没有超时。

WLS 文档说“事务超时以秒为单位。如果在此时间之后事务仍处于“活动”状态(从 begin() 开始计数),它会自动回滚。一旦事务进入准备状态,但是,此超时参数不适用;事务将重试,直到提交所有资源。"

这种行为是否与 JTA 没有任何东西可以提交,因此超时不一定适用的事实有关?

或者它是否与因为没有真正的数据库(插入/更新/删除)所以事务永远不会处于真正的活动状态这一事实有关?

4

1 回答 1

0

JTA 事务超时仅适用于基于 XA 的数据源。您能否确认数据源是使用 XA 数据库驱动程序设置的?

于 2012-06-15T18:29:22.990 回答