2016-04-28 29 views
2

Ich experimentiere mit Standalone-JPA und JTA/XA-Transaktionsverwaltung von Atomikos.Atomikos: Ausnahme, wenn die Transaktion mehr als eine Persistenz enthält

Mein einfacher Komponententest besteht aus 3 Datensätzen, die in einer JTA UserTransaction verpackt sind.

Wenn H2 als Hintergrunddatenbank verwendet wird, funktioniert der Test einwandfrei.

Bei Verwendung als Träger MySQL Datenbank, lösen die Sekunden persistieren diese Ausnahme:

com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_INVAL: Ungültige Argumente (oder nicht unterstützten Befehl)

(siehe vollständige Stapelverfolgung und Protokollierung unten). Die Log-Datei gibt mehr Detail:

ACHTUNG: XA-Ressource 'jdbc/MySqlDS': Lebenslauf für XID '3139322E3136382E31342E3131372E746D30303030323030303831: 3139322E3136382E31342E3131372E746D32' angehoben -5: ungültige Argumente für den XA Betrieb

gegeben wurden Wenn Ich lasse nur einen einzigen persist im Test, es gelingt. Der gleiche Test ist auch erfolgreich, wenn H2 anstelle von MySQL verwendet wird.

Also Frage: Was könnte die Ursache der Ausnahme im Falle von MySQL sein?

Hier ist der Haupttestcode von JtaJpaMySQLAtomikosTest.java:

@Test 
    public void testSingleCommitMySql() throws Exception { 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("javaee7.standalone.jta.pu_mysql"); 
    EntityManager em = emf.createEntityManager(); 

    UserTransaction userTransaction = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction"); 
    userTransaction.begin(); 

    em.joinTransaction(); 
    em.persist(new TestEntity("FOO", "A")); 
    em.persist(new TestEntity("BAR", "B")); 
    em.persist(new TestEntity("BAZ", "C")); 

    em.flush(); 
    userTransaction.commit(); 

    TypedQuery<TestEntity> query = em.createQuery("SELECT b FROM TestEntity b WHERE name = :name", TestEntity.class) 
     .setParameter("name", "FOO"); 

    assertEquals("A", query.getSingleResult().getValue()); 

    em.close(); 
    emf.close(); 
    } 

Wenn Sie den vollständigen Test-Code benötigen, lassen Sie es mich wissen.

Hier ist der relevante Teil der Protokollierung + Ausnahme:

INFO: AtomikosDataSoureBean 'jdbc/mysqlDs': getConnection (null)... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: AtomikosDataSoureBean 'jdbc/mysqlDs': init... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling getAutoCommit... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling getMetaData... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling createStatement... 
Apr 28, 2016 12:34:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute 
INFO: HHH000396: Updating schema 
Apr 28, 2016 12:34:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init> 
INFO: HHH000261: Table found: twophasepoc.testentity 
Apr 28, 2016 12:34:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init> 
INFO: HHH000037: Columns: [name, id, value] 
Apr 28, 2016 12:34:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init> 
INFO: HHH000108: Foreign keys: [] 
Apr 28, 2016 12:34:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init> 
INFO: HHH000126: Indexes: [primary] 
Apr 28, 2016 12:34:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute 
INFO: HHH000232: Schema update complete 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling getWarnings... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling clearWarnings... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: close()... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: createCompositeTransaction (10000): created new ROOT transaction with id 192.168.14.117.tm0000200081 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: registerSynchronization ([email protected]) for transaction 192.168.14.117.tm0000200081 
Hibernate: 
    insert 
    into 
     TestEntity 
     (name, value) 
    values 
     (?, ?) 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: AtomikosDataSoureBean 'jdbc/mysqlDs': getConnection (null)... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: AtomikosDataSoureBean 'jdbc/mysqlDs': init... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: addParticipant (XAResourceTransaction: 3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32) for transaction 192.168.14.117.tm0000200081 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: XAResource.start (3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32 , XAResource.TMNOFLAGS) on resource jdbc/mysqlDs represented by XAResource instance [email protected] 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: registerSynchronization (com.a[email protected]35a707b3) for transaction 192.168.14.117.tm0000200081 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling prepareStatement(insert into TestEntity (name, value) values (?, ?),1)... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: isClosed()... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling getWarnings... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: calling clearWarnings... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: atomikos connection proxy for [email protected]: close()... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: XAResource.end (3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32 , XAResource.TMSUCCESS) on resource jdbc/mysqlDs represented by XAResource instance [email protected] 
Hibernate: 
    insert 
    into 
     TestEntity 
     (name, value) 
    values 
     (?, ?) 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: AtomikosDataSoureBean 'jdbc/mysqlDs': getConnection (null)... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: AtomikosDataSoureBean 'jdbc/mysqlDs': init... 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: addParticipant (XAResourceTransaction: 3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32) for transaction 192.168.14.117.tm0000200081 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: XAResource.start (3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32 , XAResource.TMJOIN) on resource jdbc/mysqlDs represented by XAResource instance [email protected] 
Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logWarning 
WARNING: XA resource 'jdbc/mysqlDs': resume for XID '3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32' raised -5: invalid arguments were given for the XA operation 
com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_INVAL: Invalid arguments (or unsupported command) 
    at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.mapXAExceptionFromSQLException(MysqlXAConnection.java:581) 
    at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.dispatchCommand(MysqlXAConnection.java:566) 
    at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.start(MysqlXAConnection.java:507) 
    at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:427) 
    at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:59) 
    at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:64) 
    at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:88) 
    at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:179) 
    at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:223) 
    at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:142) 
    at com.sun.proxy.$Proxy12.prepareStatement(Unknown Source) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:124) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:122) 
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:89) 
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:55) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3556) 
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:97) 
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:480) 
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:191) 
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:175) 
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:210) 
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:324) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:194) 
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125) 
    at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:84) 
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:206) 
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:149) 
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75) 
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:807) 
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:780) 
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181) 
    at JtaJpaMySQLAtomikosTest.testSingleCommitMySql(JtaJpaMySQLAtomikosTest.java:88) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: java.sql.SQLException: XAER_INVAL: Invalid arguments (or unsupported command) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2505) 
    at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:840) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:740) 
    at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.dispatchCommand(MysqlXAConnection.java:560) 
    ... 60 more 

Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logWarning 
WARNING: Error enlisting in transaction - connection might be broken? Please check the logs for more information... 
com.atomikos.datasource.ResourceException: XA resource 'jdbc/mysqlDs': resume for XID '3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32' raised -5: invalid arguments were given for the XA operation 
    at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:434) 
    at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:59) 
    at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:64) 
    at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:88) 
    at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:179) 
    at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:223) 
    at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:142) 
    at com.sun.proxy.$Proxy12.prepareStatement(Unknown Source) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:124) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:122) 
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:89) 
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:55) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3556) 
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:97) 
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:480) 
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:191) 
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:175) 
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:210) 
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:324) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:194) 
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125) 
    at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:84) 
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:206) 
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:149) 
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75) 
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:807) 
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:780) 
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181) 
    at JtaJpaMySQLAtomikosTest.testSingleCommitMySql(JtaJpaMySQLAtomikosTest.java:88) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

Apr 28, 2016 12:34:57 PM com.atomikos.logging.JULLogger logInfo 
INFO: setRollbackOnly() called for transaction 192.168.14.117.tm0000200081 

Hier ist die persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" 
      version="2.1"> 
    <persistence-unit name="javaee7.standalone.jta.pu_mysql" transaction-type="JTA"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <jta-data-source>jdbc/mysqlDs</jta-data-source> 
     <class>TestEntity</class> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.format_sql" value="true"/> 
      <property name="hibernate.hbm2ddl.auto" value="update"/> 
      <property name="hibernate.transaction.jta.platform" value="AtomikosJtaPlatform"/> 
     </properties> 
    </persistence-unit> 
</persistence> 
+0

Sie verwenden, die von MySQL jar Version erkundet werden? –

+0

@SyedEkramUddinEmon mysql Server ist 5.5.31 (lokal auf meinem Windows-Rechner ausgeführt), Connector-J ist 5.1.38 – geert3

Antwort

1

Das ist für MySQL-Server Begrenzung von XA-Unterstützung sein könnte, https://dev.mysql.com/doc/refman/5.5/en/xa-statements.html

Auch könnte für das bekannte Problem von Atomikos sein https://www.atomikos.com/Documentation/KnownProblems#ActiveMQ_error:_34Transaction_39XID:..._39_has_not_been_started_34

Dies könnte eine Lösung https://www.atomikos.com/Documentation/NonXaDataSource

Siehe seinen Kommentar für spezifischere Lösung unten an geert3.

Folgende Links können

https://community.oracle.com/thread/2326795 http://fogbugz.atomikos.com/default.asp?community.6.3215.2

+0

ein weiterer Link http://dev.mysql.com/doc/refman/5.7/en/xa-restrictions .html –

+1

Danke das hat sehr geholfen.Es wurde als ein bekanntes Atomikos-Problem in Verbindung mit einem MySQL-Bug aufgeführt (Ihr zweiter Link, jedoch ein anderes Element). "Eine Problemumgehung kann die folgende Eigenschaft in' jta.properties' setzen: 'com.atomikos.icatch.serial_jta_transactions = false' Stellen Sie außerdem sicher, dass die folgende Eigenschaft für die MySQL-Datenquelle festgelegt ist: ' pinGlobalTxToPhysicalConnection = "true" ' MariaDB's Java-Treiber unterstützt auch diese Problemumgehung seit v.1.1.8 – geert3

+0

Danke für Ihre Eingaben, dies wird sicherlich jemand mit ähnlichen Problem helfen. –