【问题标题】:JTA transaction timeout exception - weblogic 10.XJTA 事务超时异常 - weblogic 10.X
【发布时间】:2010-02-11 19:52:30
【问题描述】:

我从管理控制台更改了 JTA 事务超时并将其设置为 300,即使更改失败后说 JTA 事务意外回滚(可能是由于超时):

weblogic.transaction.RollbackException: Transaction timed out after 181 seconds`

为了确保我的更改(超时值 300)是否反映在该域中,我在域 config.xml 下进行了检查,它反映为 300。

我的问题是,我还有其他地方需要更新事务超时值吗?我需要重新启动服务器吗?

以下服务器异常后的完整堆栈跟踪:

引起:org.springframework.transaction.UnexpectedRollbackException:JTA事务意外回滚(可能是超时);嵌套异常是 weblogic.transaction.RollbackException: Transaction 180 秒后超时 BEA1-160A800A149091F72E5E 在 org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031) 在 org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709) 在 org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:359) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 在 $Proxy103.saveRegistryData(未知来源) 在 gov.cms.pqri.arch.submission.registry.bean.RegDataAccessManager.persistRegistry(RegDataAccessManager.java:54) ... 14 更多 原因:weblogic.transaction.RollbackException:事务在 180 秒后超时 BEA1-160A800A149091F72E5E 在 weblogic.transaction.internal.TransactionImpl.throwRollbackException (TransactionImpl.java:1818) 在 weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:333) 在 weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:227) 在 weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:281) 在 org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028) ... 22 更多

【问题讨论】:

  • 根据weblogic控制台,不需要重启服务器。你能提供完整的堆栈跟踪吗?
  • 在服务器 -> 配置 -> 从管理控制台调整(选项卡)下将卡住的线程最大时间更改为 300 后,它正在更新并且工作正常。

标签: timeout weblogic transactions jta


【解决方案1】:

在服务器 -> 配置 -> 从管理控制台调整(选项卡)下将卡住的线程最大时间更改为 300 后,它正在更新并且工作正常。

【讨论】:

    【解决方案2】:

    我也遇到过这个问题并解决了同样的问题,因为这与 JTA 事务有关,所以我们需要增加 JTA 的超时以及卡住最大线程的超时。请从 weblogic 控制台主页单击 JTA,并从 30(by default) to 300 增加 JTA 超时。

    【讨论】:

      【解决方案3】:

      我们在 Weblogic 12.1.2 上遇到了同样的问题 [JTA 事务意外回滚(可能是由于超时)] 经过所有调查,我们找到了问题的根本原因。在我看来,这是由于庞大的数据集处理事务性和接近流程结束 如果抛出异常,JTA 正在按预期回滚数据。但它没有给出错误的详细信息。在我们的例子中,这主要是因为数据库完整性(例如我们尝试插入数据比数据小的列。)

      总而言之,这将是调查数据库日志而不是增加卡住的线程最大时间的最佳方法。线程最大时间可以是一个解决方案,但对于实际企业系统来说不是一个合适的解决方案。

      这个问题也在another stackover linkhibernate jira issue 上讨论过

      并提出解决方案:

      这是 Weblogic JTA 实现的默认行为。获得 根异常,您应该设置系统属性 weblogic.transaction.allowOverrideSetRollbackReason 为 true。

      解决方案之一是将这一行添加到 /bin/setDomainEnv.cmd:

      set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.transaction.allowOverrideSetRollbackReason=true
      

      【讨论】:

        【解决方案4】:

        通过将 jta.properties 文件添加到我的应用程序的配置文件夹中,我的 JTA 超时增加了:

        com.atomikos.icatch.default_jta_timeout=600000
        com.atomikos.icatch.max_timeout=600000
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-27
          • 1970-01-01
          • 2015-02-03
          • 1970-01-01
          • 2012-03-14
          • 1970-01-01
          相关资源
          最近更新 更多