2010-12-07 3 views
1

Ich versuche, eine verteilte Transaktion zwischen zwei PostgreSQL-Datenbanken durchzuführen. Ich benutze Glassfish v3.0.1.Java EE 6 verteilte Transaktion - Getting JTS5031 Exception mit Glassfish v3.0.1

In meiner GlassFish-Domäne habe ich meine zwei Verbindungspools eingerichtet, um einen Ressourcentyp von javax.sql.XADataSource mit einem Klassennamen von org.postgresql.xa.PGXADataSource zu haben.

Ich versuche, einen Integrationstest für eine statusfreie EJB-Methode zu erstellen, die beide Datenbanken trifft. Um den Integrationstest durchzuführen, erstelle ich eine eingebettete Version von Glassfish und schaue den EJB über JNDI nach.

Wenn ich Integrationstests ausführen, die nur eine Persistenzeinheit enthalten, funktionieren sie einwandfrei.

Dies ist die erste verteilte Transaktion, die ich versuche zu tun, also bin ich mir nicht sicher, ob alles richtig eingerichtet ist.

Ich bin mir wirklich nicht sicher, wie ich Informationen darüber finden kann, wie ich das lösen kann, da ich nicht wirklich sicher bin, was der Stack erreicht. Ich habe die Logs in myDomain/logs angeschaut und konnte nichts finden - gibt es noch andere Logs? Der Stack-Trace befindet sich unter:

javax.ejb.EJBException: Containergesteuerte Transaktion konnte nicht abgeschlossen werden. bei com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:5002) bei com.sun.ejb.containers.BaseContainer.postInvokeTx (BaseContainer.java:4756) bei com.sun.ejb.containers. BaseContainer.postInvoke (BaseContainer.java:1955) bei com.sun.ejb.containers.BaseContainer.postInvoke (BaseContainer.java:1906) bei com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke (EJBLocalObjectInvocationHandler.java:198) bei com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke (EJBLocalObjectInvocationHandlerDelegate.java:84) um $ Proxy101.createAccount (unbekannte Quelle) bei cheetah.services.impl. EJB31_Generated_ Account _Intf_Bean _.createAccount (Unknown Source) bei cheetah.services.tests.integration.AccountServiceTest.createAccount_ValidParameters_AccountCreated (AccountServiceTest.java:60) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) bei java.lang.reflect.Method.invoke (Method.java:597) bei org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) bei oder g.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) bei org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:41) bei org.junit.internal.runners. statements.InvokeMethod.evaluate (InvokeMethod.java:20) bei org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:28) bei org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) bei org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored (BlockJUnit4ClassRunner.java:79) bei org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:71) bei org.junit.runners. BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:49) bei org.junit.runners.ParentRunner $ 3.run (ParentRunner.ja va: 193) bei org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) bei org.junit.runners.ParentRunner.runChildren (ParentRunner.java: 191) bei org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) bei org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) bei org.junit.internal. runBefores.evaluate (RunBefores.java:28) bei org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) bei org.junit.runners.ParentRunner.run (ParentRunner. java: 236) bei org.junit.runners.Suite.runChild (Suite.java:128) bei org.junit.runners.Suite.runChild (Suite.java:24) bei org.junit.runners.ParentRunner $ 3 .run (ParentRunner.java:193) bei org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) bei org.junit.runners.ParentRunner.runChildren (ParentRunner.ja va: 191) bei org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) bei org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) bei org.junit.internal. runBefores.evaluate (RunBefores.java:28) bei org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) bei org.junit.runners.ParentRunner.run (ParentRunner. Java: 236) bei junit.framework.JUnit4TestAdapter.run (JUnit4TestAdapter.java:39) bei org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run (JUnitTestRunner.java:518) bei org. apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch (JUnitTestRunner.java:1052) bei org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main (J UnitTestRunner.java:906) verursacht durch: javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Ausnahme [org.omg.CORBA.INTERNAL: vmcid: 0x0 Nebencode: 0 abgeschlossen: Vielleicht] auf Ressource [ Rollback] -Operation. vmcid: 0x0 minor Code: 0 beendet: Nein bei com.sun.jts.jta.TransactionManagerImpl.commit (TransactionManagerImpl.java:330) bei com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate.commitDistributedTransaction (JavaEETransactionManagerJTSDelegate.java: 158) bei com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit (JavaEETransactionManagerSimplified.java:843) bei com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:4991) ... 43 weitere

Antwort

1

Ich hatte ein ähnliches Problem (CORBA-Fehler JTS5031), die sich herausstellte, weil Glassfish eine vorbereitete Transaktion wollte (die es in den 2 Jahren nie wollte) und mein dbms (postgres) nicht konfiguriert war benutze sie.

versuchen Sie in Ihren Postgres Logs

suchen
Verwandte Themen