Исключение тайм-аута транзакции JTA - weblogic 10.X - PullRequest
4 голосов
/ 11 февраля 2010

Я изменил тайм-аут транзакции JTA из консоли администратора и установил значение 300, даже после его изменения произошел сбой, сказав, что транзакция JTA неожиданно откатилась (возможно из-за тайм-аута) с:

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

Чтобы убедиться, отражены ли мои изменения (значение тайм-аута 300) для этого домена или нет, я проверил в домене config.xml, что было отражено с 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

Ответы [ 3 ]

4 голосов
/ 16 февраля 2010

после изменения времени застревания Thread Max на 300 под серверами -> конфигурация -> настройка (вкладка) из консоли администратора оно обновляется и работает нормально.

2 голосов
/ 23 ноября 2011

Я также сталкивался с этой проблемой и решил ее, так как это связано с транзакцией JTA, поэтому нам нужно увеличить время ожидания JTA, а также время ожидания для зависшего потока max. Пожалуйста, нажмите на JTA из домашней консоли weblogic и увеличьте время ожидания JTA с 30(by default) to 300.

1 голос
/ 10 января 2018

Мы столкнулись с той же проблемой в Weblogic 12.1.2 [транзакция JTA неожиданно откатилась (возможно, из-за тайм-аута)]. После всех исследований мы нашли причину проблемы. ближе к концу процесса Если выдается исключение, JTA откатывает данные, как и ожидалось. Но это не дает подробностей об ошибке. В нашем случае это происходит в основном из-за целостности базы данных (например, мы пытаемся вставить данные столбец с меньшим размером, чем данные.)

Таким образом, это будет лучший способ исследовать журналы БД, вместо того, чтобы увеличивать зависшее Максимальное время потока. Максимальное время потока может быть решением, но не подходящим решением для реальных корпоративных систем.

Также эта проблема обсуждалась на другой ссылке на стек и проблема гибернации jira

И решение предложено:

Это поведение по умолчанию реализации Weblogic JTA. Чтобы получить Исключение root вы должны установить системное свойство weblogic.transaction.allowOverrideSetRollbackReason для true.

Одним из решений является добавление этой строки в /bin/setDomainEnv.cmd:

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