Hello Folks
I configured an existing solution JSF 2, JPA with SPRING with Atomikos JTA .... but this error is occurring:
When I run a bean method with only 1 insert, the error does not appear .. when I run a bean method occurs with 2 or more inserts and or updates, the error happens.Code:WARNING: XA resource 'jdbc/intranet': resume for XID '696E7472616E65743230303030313030303137:696E7472616E65743231' raised -8: the supplied XID already exists in this XA resource javax.transaction.xa.XAException: XAER_DUPID: The XID identifies an existing transaction. at net.sourceforge.jtds.jdbc.XASupport.raiseXAException(XASupport.java:677) at net.sourceforge.jtds.jdbc.XASupport.xa_start(XASupport.java:191) at net.sourceforge.jtds.jdbcx.JtdsXAResource.start(JtdsXAResource.java:105) at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:498) at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:59) at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:65) 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:208) at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:142) at sun.proxy.$Proxy37.createStatement(Unknown Source) at com.forj.cirrus.infra.hibernate.CirrusConnectionProvider.getConnection(CirrusConnectionProvider.java:53) at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:281) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82) at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138) at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) at sun.proxy.$Proxy66.prepareStatement(Unknown Source) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:147) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:145) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1719) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1696) at org.hibernate.loader.Loader.doQuery(Loader.java:831) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:292) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:262) at org.hibernate.loader.Loader.loadEntity(Loader.java:1976) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3720) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:244) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1079) at org.hibernate.internal.SessionImpl.access$2200(SessionImpl.java:172) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2425) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:979) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:271) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:151) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:904) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:888) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:892) at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:879) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) at sun.proxy.$Proxy39.merge(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) at sun.proxy.$Proxy39.merge(Unknown Source)
I have several bean, calling other beans.insert () all with @ Transactional ... It seems that Atomikos is not able to properly propagate internal transactions other beans....
This solution was already running transactions using JpaTransactionManager ... but when I configured the JtaTransactionManager stopped working ...
My spring xml:
Could someone help me?Code:<bean id="dataSourceBean" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/intranet" /> <property name="resourceRef" value="true" /> </bean> <bean id="jpaDialectBean" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> <bean id="emfBean" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitName" value="sistema" /> <property name="dataSource" ref="dataSourceBean" /> <property name="packagesToScan" value="uniprime.intranet.negocio.dominio" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="databasePlatform" value="org.hibernate.dialect.SQLServerDialect" /> <property name="showSql" value="true" /> </bean> </property> <property name="jpaProperties"> <props> <prop key="hibernate.current_session_context_class">jta</prop> <prop key="hibernate.connection.provider_class">com.forj.cirrus.infra.hibernate.CirrusConnectionProvider</prop> <prop key="hibernate.transaction.factory_class">org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory</prop> <prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup</prop> </props> </property> <property name="persistenceUnitPostProcessors"> <list> <bean class="uniprime.intranet.infra.util.TransactionTypeSelectorPersistenceUnitPostProcessor"/> </list> </property> </bean> <bean id="emBean" class="org.springframework.orm.jpa.support.SharedEntityManagerBean"> <property name="entityManagerFactory" ref="emfBean" /> </bean> <bean id="userTransactionService" class="com.atomikos.icatch.config.UserTransactionServiceImp" init-method="init" destroy-method="shutdownForce"> <constructor-arg> <props> <prop key="com.atomikos.icatch.service"> com.atomikos.icatch.standalone.UserTransactionServiceFactory </prop> <prop key="com.atomikos.icatch.tm_unique_name"> intranet2 </prop> </props> </constructor-arg> </bean> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close" depends-on="userTransactionService"> <property name="startupTransactionService" value="false"/> <!-- when close is called, should we force transactions to terminate or not? --> <property name="forceShutdown" value="false" /> <property name="transactionTimeout" value="3000" /> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="3000" /> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager" ref="atomikosTransactionManager" /> <property name="userTransaction" ref="atomikosUserTransaction" /> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>
Best Regards.


Reply With Quote
