2010-02-11 62 views
4

我從管理控制檯改變了JTA事務超時,並設置爲300,即使有變化的失敗說JTA事務意外(因爲超時可能)回滾之後:JTA事務超時異常 - weblogic的10.X

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

要確保我的變化(超時值300)是否得到了反映該域或不是我下的域名​​3210檢查它得到了與300

我的問題是反映,是否有任何其他地方還做我需要更新事務超時值,我需要重新啓動服務器嗎?從服務器下面的異常後

完整的堆棧跟蹤:

 
Caused by: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is weblogic.transaction.RollbackException: Transaction 
timed out after 180 seconds 
BEA1-160A800A149091F72E5E 
    at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:359) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at $Proxy103.saveRegistryData(Unknown Source) 
    at gov.cms.pqri.arch.submission.registry.bean.RegDataAccessManager.persistRegistry(RegDataAccessManager.java:54) 
    ... 14 more 
Caused by: weblogic.transaction.RollbackException: Transaction timed out after 180 seconds 
BEA1-160A800A149091F72E5E 
    at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1818) 
    at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:333) 
    at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:227) 
    at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:281) 
    at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028) 
    ... 22 more 
+0

根據WebLogic控制檯,你不需要重新啓動服務器。你能提供完整的堆棧跟蹤嗎? – 2010-02-12 02:54:59

+0

在服務器 - >配置 - >調整(選項卡)從管理控制檯更改卡住線程最長時間後,它正在更新和工作正常。 – 2010-02-15 21:28:25

回答

4

下服務器改變阻塞線程最大時間爲300後 - >配置 - >調整(標籤)從管理控制檯它獲取更新和工作精細。

2

我也遇到過這個問題,並已解決相同的問題,因爲這與JTA事務有關,所以我們需要增加JTA的超時以及卡住最大線程的超時時間。請從weblogic控制檯主頁點擊JTA,並從30(by default) to 300增加JTA超時。

1

我們在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