2016-04-28 2 views
2

Я экспериментирую с автономным управлением транзакциями JPA и JTA/XA, предоставляемыми Atomikos.Atomicos: исключение, когда транзакция содержит более одного объекта.

Простой единичный тест сохраняется 3 записи, завернутые в JTA UserTransaction.

При использовании H2 в качестве базы данных базы данных проверка работает нормально.

При использовании MySQL в качестве базы данных основы, то второго сохраняется выдает это исключение:

com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_INVAL: Неверные аргументы (или неподдерживаемые команды)

(см. Полную отслеживание стека и ведение журнала ниже). Файл журнала дает более подробную информацию:

ПРЕДУПРЕЖДЕНИЕ: XA ресурс 'JDBC/mysqlDs': резюме для Xid '3139322E3136382E31342E3131372E746D30303030323030303831: 3139322E3136382E31342E3131372E746D32' поднял -5: недопустимые аргументы были даны для работы XA

If Я оставляю только один persist в тесте, он преуспевает. Тот же тест также преуспевает при использовании H2 вместо MySQL.

Вопрос: что может быть причиной исключения в случае MySQL?

Вот главный тестовый код из 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(); 
    } 

Если вам нужен полный тестовый код, дайте мне знать.

Вот соответствующая часть каротаж + исключение:

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 

Вот 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

который MySQL баночка версию вы используете? –

+0

@SyedEkramUddinEmon сервер mysql - 5.5.31 (выполняется локально на моей машине с Windows), разъем-J - это 5.1.38 – geert3

ответ

1

это может быть для MySQL сервера ограничение поддержки XA, https://dev.mysql.com/doc/refman/5.5/en/xa-statements.html

Также может быть для известной проблемы atomikos https://www.atomikos.com/Documentation/KnownProblems#ActiveMQ_error:_34Transaction_39XID:..._39_has_not_been_started_34

это может быть решением https://www.atomikos.com/Documentation/NonXaDataSource

Обратитесь к geert3 комментарий ниже более конкретного решения.

Эти ссылки могут быть изучены

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

+0

еще одна ссылка http://dev.mysql.com/doc/refman/5.7/en/xa-restrictions .html –

+1

Спасибо, это очень помогло.Он был указан как известная проблема Atomikos, связанная с ошибкой MySQL (вторая ссылка, однако другой элемент). «Обходным решением может быть установлено следующее свойство в' jta.properties': 'com.atomikos.icatch.serial_jta_transactions = false' Также не забудьте установить следующее свойство в источнике данных MySQL: ' pinGlobalTxToPhysicalConnection = "true" ' Драйвер javaa MariaDB также поддерживает это обходное решение, так как v.1.1.8 – geert3

+0

Спасибо, что сообщили ваши данные, это наверняка поможет кому-то с подобной проблемой. –

Смежные вопросы