Ich verwende Atomikos essential transactions als mein TM in meiner J2SE-Anwendung.
Ich habe den folgenden Code:
if (userTransaction.getStatus()== Status.STATUS_ACTIVE){
userTransaction.commit();
}
und dann sehe ich in den Protokollen die folgende Ausnahme:
java.lang.IllegalStateException: TM_UNIQUE_NAME0003000006 ist nicht mehr aktiv, aber im Zustand ABGESCHLOSSEN unter com.atomikos.icatch.imp.CoordinatorImp.addParticipant(CoordinatorImp.java:615) bei 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) bei com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:79) at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:236) bei com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:496) at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:129) bei com.mycompany.module.view.myOtherClass.transformMpr(myOtherClass.java:57) at java.util.Observable.notifyObservers(Unbekannt Source) at com.mycompany.module.model.myClass.notifyObservers(myClass.java:291) at com.mycompany.module.model.myClass.MultiStateEscalation.run(myClass.java:91) bei java.util.concurrent.Executors$RunnableAdapter.call(Unbekannt Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unbekannt Source) at java.util.concurrent.FutureTask.run(Unbekannte Quelle) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Quelle) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Quelle) bei java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unbekannte Quelle) bei java.util.concurrent.ThreadPoolExecutor$Worker.run(Unbekannte Quelle) bei java.lang.Thread.run(Unbekannte Quelle)
Wo Zeile 57 in der myOtherClass
ist die Zeile, in der ich die commit()
in dem obigen Code. userTransaction ist eine Instanz von UserTransaction
.
Was ich nicht verstehen kann, ist, was die ABGESCHLOSSEN bedeutet? Ich konnte diese Klassen in der Atomikos-Distribution nicht finden (was seltsam ist, da sie quelloffen sind und ich zusätzlich eine Textsuche nach der Zeichenkette über alle Quellen durchgeführt habe) und terminiert ist nicht einer der Status, die in javax.transaction.Status
.
Hat jemand diese Erfahrung gemacht? Wie kann ich überprüfen, ob die userTransaction, die ich habe, für die Übertragung gültig ist?
Danke,
Ittai