gpt4 book ai didi

java - UserTransaction 的 "TERMINATED"状态在 Atomikos 日志中意味着什么?

转载 作者:行者123 更新时间:2023-11-30 09:51:52 24 4
gpt4 key购买 nike


我在我的 J2SE 应用程序中使用 Atomikos 基本事务作为我的 TM。
我有以下代码:

if (userTransaction.getStatus()== Status.STATUS_ACTIVE){
userTransaction.commit();
}

然后我在日志中看到以下异常:

java.lang.IllegalStateException: TM_UNIQUE_NAME0003000006 is no longer active but in state TERMINATED at com.atomikos.icatch.imp.CoordinatorImp.addParticipant(CoordinatorImp.java:615) at com.atomikos.icatch.imp.TransactionStateHandler.addParticipant(TransactionStateHandler.java:133) at com.atomikos.icatch.imp.TransactionStateHandler.committed(TransactionStateHandler.java:347) at com.atomikos.icatch.imp.TransactionStateHandler.commit(TransactionStateHandler.java:298) at com.atomikos.icatch.imp.CompositeTransactionImp.doCommit(CompositeTransactionImp.java:319) at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:79) at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:236) at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:496) at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:129) at com.mycompany.module.view.myOtherClass.transformMpr(myOtherClass.java:57) at java.util.Observable.notifyObservers(Unknown Source) at com.mycompany.module.model.myClass.notifyObservers(myClass.java:291) at com.mycompany.module.model.myClass.MultiStateEscalation.run(myClass.java:91) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

myOtherClass 中的第 57 行是我在上面的代码中调用 commit() 的行。 userTransaction 是 UserTransaction 的实例。
我不明白的是 TERMINATED 是什么意思?我在 Atomikos 发行版中找不到这些类(这很奇怪,因为它们是开源的,而且我还对所有来源的字符串进行了文本搜索)并且终止不是 javax.transaction 中定义的状态之一.状态.
有人遇到过这个吗?如何检查我持有的 userTransaction 是否对提交有效?

谢谢,
一泰

最佳答案

TERMINATED 表示提交或回滚。在您的情况下,很可能是超时/回滚。

如果可以,请尝试增加超时。

一般来说,检查事务状态并不能保证下一行代码可以提交。提交是一个应用程序请求,可能会因超时和资源问题而失败;否则你不需要两阶段提交:-)

最佳

关于java - UserTransaction 的 "TERMINATED"状态在 Atomikos 日志中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com