【发布时间】:2017-12-30 03:07:00
【问题描述】:
我正在使用 Atomikos 进行 JTA 交易。 我对 JTA 有以下设置:
UserTransactionImp userTransactionImp = new UserTransactionImp();
userTransactionImp.setTransactionTimeout(900);
但是当我的代码执行 JTA 事务时,如果它需要超过 5 分钟(这是默认值)然后它会抛出异常:
Caused by: com.atomikos.icatch.RollbackException: Prepare: NO vote
at com.atomikos.icatch.imp.ActiveStateHandler.prepare(ActiveStateHandler.java:231)
at com.atomikos.icatch.imp.CoordinatorImp.prepare(CoordinatorImp.java:681)
at com.atomikos.icatch.imp.CoordinatorImp.terminate(CoordinatorImp.java:970)
at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:82)
at com.atomikos.icatch.imp.CompositeTransactionImp.commit(CompositeTransactionImp.java:336)
at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:190)
... 25 common frames omitted
看起来它采用默认的 jta 事务超时(即使我明确设置超时(15 分钟/900 秒)。
我尝试在 application.properties 文件中使用以下属性,但它仍然采用默认超时值(300 秒)。
spring.jta.atomikos.properties.max-timeout=600000
spring.jta.atomikos.properties.default-jta-timeout=10000
我也尝试过以下属性,但没有运气:
spring.transaction.default-timeout=900
谁能建议我是否需要任何其他设置?我正在使用 wildfly 插件、spring boot 和 atomikos api 进行 JTA 事务。
【问题讨论】: