내 J2SE 응용 프로그램에서 Atomikos 필수 트랜잭션을 내 TM으로 사용하고 있습니다.
나는이 다음 코드 :Atomikos 로그에서 UserTransaction의 "TERMINATED"상태는 무엇을 의미합니까?
if (userTransaction.getStatus()== Status.STATUS_ACTIVE){
userTransaction.commit();
}
후 내가 로그에 다음과 같은 예외를 참조하십시오
java.lang.IllegalStateException : TM_UNIQUE_NAME0003000006 더 이상 활성하지만 상태 TERMINATED에 at com.atomikos.icatch.imp.CoordinatorImp.addParticipant (CoordinatorImp.java:615) at com.atomikos.icatch.imp.TransactionStateHandler.addPartic ipant com.atomikos.icatch.imp.TransactionStateHandler.commit에서 com.atomikos.icatch.imp.TransactionStateHandler.committed (TransactionStateHandler.java:347)에서 (TransactionStateHandler.java:133) (TransactionStateHandler.java:298) com.atomikos.icatch에서 com.atomikos.icatch.imp.CompositeTransactionImp.doCommit com.atomikos.icatch.imp.CompositeTerminatorImp.commit (CompositeTerminatorImp.java:79)에서 (CompositeTransactionImp.java:319) 에서 .jta.TransactionImp.commit (TransactionImp.java:236) at com.atomikos.icatch.jta.TransactionManagerImp.commit (TransactionManagerImp.java:496) at java.util.Observable.notifyObservers에서com.atomikos.icatch.jta.UserTransactionImp.commit com.mycompany.module.view.myOtherClass.transformMpr (myOtherClass.java:57)에서 (UserTransactionImp.java:129) com.mycompany.module.model.myClass.MultiStateEscalation.run (myClass.java:91)에서 com.mycompany.module.model.myClass.notifyObservers (myClass.java:291)에서 (알 소스)에 java.util.concurrent.Executors $ RunnableAdapter.call java.util.concurrent.Futur에서 java.util.concurrent.FutureTask $ Sync.innerRun (알 소스)에서 (알 소스) eTask.run 있는 java.util에서 java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (알 소스)에서 $ 301 (알 소스) java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access에서 (알 소스) java.lang.Thread.run에서 java.util.concurrent.ThreadPoolExecutor $ Worker.run (알 소스) (알 수없는 소스)
에서 .concurrent.ThreadPoolExecutor $ Worker.runTask (알 소스) 여기서 myOtherClass
의 57 번째 줄은 내가 전화하는 곳입니다.위의 코드에서. userTransaction은 UserTransaction
의 인스턴스입니다.
내가 이해할 수없는 것은 무엇입니까 종료 됨을 의미합니까? Atomikos 배포판에서이 클래스를 찾을 수 없었습니다. 오픈 소스 이후로 이상하게 보였습니다. 모든 소스에서 문자열을 텍스트로 검색하여 실행했습니다. 종료 된 문자열은 javax.transaction.Status
에 정의 된 상태 중 하나가 아닙니다.
누군가이 문제가 발생 했습니까? 보유하고있는 userTransaction이 커밋에 유효한지 어떻게 확인할 수 있습니까?
감사합니다,
잇대
감사합니다 :-) 2 단계 커밋이 필요하지 않을 것입니다. 1) 그것이 타임 아웃이라고 가정 할 때 두 가지 질문이 있습니다. Atomikos 포럼의 제안에 따라 타임 아웃을 늘리면 시간이 초과되었습니다. TX IF Xms 이전에 'IF'가 발생 했습니까? 2) Atomikos가 JTA 상태 테이블에 중재하지 않는 상태를 출력하는 이유는 무엇입니까? 그것은 내 의견으로는 훨씬 더 유익하고 자명 할 수 있습니다. 입력 해 주셔서 다시 한 번 감사드립니다. – Ittai