두 개의 PostgreSQL 데이터베이스간에 분산 트랜잭션을 수행하려고합니다. Glassfish v3.0.1을 사용하고 있습니다.Java EE 6 분산 트랜잭션 - Glassfish v3.0.1로 JTS5031 예외 받기
내 GlassFish 도메인에서 클래스 이름이 org.postgresql.xa.PGXADataSource 인 javax.sql.XADataSource의 리소스 유형을 갖도록 두 개의 연결 풀을 설정했습니다.
두 데이터베이스에 모두 도달하는 상태 비 저장 EJB 메소드에서 통합 테스트를 작성하려고합니다. 통합 테스트를 수행하기 위해 glassfish의 임베디드 버전을 만들고 JNDI를 통해 EJB를 검색합니다.
하나의 지속성 단위 만 포함하는 통합 테스트를 실행할 때 제대로 작동합니다.
이것은 처음 시도한 분산 트랜잭션이므로 모든 것이 올바르게 설정되었는지 잘 모르겠습니다.
스택을 얻는 방법에 대해 잘 모르겠으므로이 문제를 해결하는 방법을 찾는 방법을 알지 못합니다. myDomain/logs의 로그를보고 아무 것도 찾을 수 없습니다. 다른 로그가 있습니까? 스택 추적은 다음과 같습니다.
컨테이너 관리 트랜잭션을 완료 할 수 없습니다. com.sun.ejb.containers에서 com.sun.ejb.containers.BaseContainer.postInvokeTx (BaseContainer.java:4756) 에서 com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:5002) 에서 . BaseContainer.postInvoke (BaseContainer.java:1955) at com.sun.ejb.containers.BaseContainer.postInvoke (BaseContainer.java:1906) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke (EJBLocalObjectInvocationHandler.java:198) com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke (EJBLocalObjectInvocationHandlerDelegate.java:84) $ Proxy101.createAccount (알 수없는 출처) at cheetah.services.impl. sun.reflect.NativeMethodAccessorImpl.invoke0에서 EJB31_Generated_ AccountService에 _Intf_콩 _.createAccount (알 수없는 소스) cheetah.services.tests.integration.AccountServiceTest.createAccount_ValidParameters_AccountCreated (AccountServiceTest.java:60)에서 (기본 방법) java.lang.reflect.Method.invoke에서 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) 에서 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) 에서 (Method.java:597) at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) at 또는 g.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:41) at org.junit.internal.runners. org.junit.internal.runners.statements.RunAfters.evaluate에서 org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:28) 에서 statements.InvokeMethod.evaluate (InvokeMethod.java:20) (RunAfters.java:31) org.junit.runners에서 org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:71에서 org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored (BlockJUnit4ClassRunner.java:79) 에서 ) . BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner $ 3.run (ParentRunner.ja) va : 193) at org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren (ParentRunner.java : 191) at org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) at org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) at org.junit.internal. runners.statements.RunBefores.evaluate (RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) at org.junit.runners.ParentRunner.run (ParentRunner. java : 236) at org.junit.runners.Suite.runChild (Suite.java:128) at org.junit.runners.Suite.runChild (Suite.java:24) at org.junit.runners.ParentRunner $ 3 .run (ParentRunner.java:193) at org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren (ParentRunner.java:193) va : 191) at org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) at org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) at org.junit.internal. runners.statements.RunBefores.evaluate (RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) at org.junit.runners.ParentRunner.run (ParentRunner. 자바 : 조직에서 org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run (JUnitTestRunner.java:518) 에서 junit.framework.JUnit4TestAdapter.run (JUnit4TestAdapter.java:39) 236) . (org.apache.tools.ant.tasks.cs). UnitTestRunner.java:906) 발생 원인 : javax.transaction.SystemException : JTS5031 : 예외 [org.omg.CORBA.INTERNAL : vmcid : 0x0 마이너 코드 : 0 완료 : 미정]의 Resource [ 롤백] 조작. vmcid : 0x0 마이너 코드 : 0 완료 : 아니요 com.sun.jts.jta.TransactionManagerImpl.commit (TransactionManagerImpl.java:330)에서 com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate.commitDistributedTransaction (JavaEETransactionManagerJTSDelegate.java : 158) com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:4991) 에서 com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit (JavaEETransactionManagerSimplified.java:843) 에서 ... (43)보다