Atomikos Forum |
|
Hi, I have a war application deployed on jetty and using atomikos 3.9.3, spring 4, eclipselink 2.5.2 (with static waving) and Postgress XA driver 9.2-1002-jdbc4. From a spring @Controller class I only call this method:
@Transactional public void dummyUpdate() { AppConfig appConfig = entityManager.find(AppConfig.class, 1); appConfig.setValue(String.valueOf(System.currentTimeMillis())); } Although no rollback log message occur (see atomikos log below) the database remains unchanged. When using jboss's transaction manager & usertransaction & datasourse through jndi the database is changed. What's the problem with my atomikos configuration ? The spring configuration is: <bean id="entityManager" depends-on="dataSource" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="jtaDataSource" ref="dataSource" /> <property name="packagesToScan" value="ro.uti.sags.stoservices.persistence" /> <property name="persistenceUnitName" value="sto" /> <property name="persistenceProvider"> <bean class="org.eclipse.persistence.jpa.PersistenceProvider"/> </property> <property name="jpaPropertyMap" ref="jpaPropertyMap"/> <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> <property name="jpaDialect"> <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect" /> </property> </bean> <bean id="setMyAtomikosSystemProps" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject"> <!-- System.getProperties() --> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="java.lang.System" /> <property name="targetMethod" value="getProperties" /> </bean> </property> <property name="targetMethod" value="putAll" /> <property name="arguments"> <!-- The new Properties --> <util:properties> <!--<prop key="com.atomikos.icatch.file">/etc/myapp/jta.properties</prop>--> <prop key="com.atomikos.icatch.no_file">true</prop> <prop key="com.atomikos.icatch.hide_init_file_path">true</prop> <prop key="com.atomikos.icatch.service"> com.atomikos.icatch.standalone.UserTransactionServiceFactory </prop> </util:properties> </property> </bean> <bean id="userTransactionService" depends-on="setMyAtomikosSystemProps" class="com.atomikos.icatch.config.UserTransactionServiceImp" init-method="init" destroy-method="shutdownForce"> </bean> <!-- Construct Atomikos UserTransactionManager, needed to configure Spring --> <bean id="atomikosTransactionManager" depends-on="userTransactionService" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <!-- IMPORTANT: disable startup because the userTransactionService above does this --> <property name="startupTransactionService" value="false"/> <!-- when close is called, should we force transactions to terminate or not? --> <property name="forceShutdown" value="false" /> </bean> <!-- Also use Atomikos UserTransactionImp, needed to configure Spring --> <bean id="atomikosUserTransaction" depends-on="userTransactionService" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="300" /> </bean> <!-- Configure the Spring framework to use JTA transactions from Atomikos --> <bean id="transactionManager" depends-on="userTransactionService" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager" ref="atomikosTransactionManager" /> <property name="userTransaction" ref="atomikosUserTransaction" /> </bean> <bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <property name="xaDataSourceClassName" value="org.postgresql.xa.PGXADataSource"/> <property name="minPoolSize" value="1"/> <property name="maxPoolSize" value="5"/> <property name="xaProperties"> <props> <prop key="user">${db.username}</prop> <prop key="password">${password}</prop> <prop key="databaseName">${databaseName}</prop> <prop key="serverName">${serverName}</prop> </props> </property> <property name="UniqueResourceName" value="sto-xa-db"/> </bean> The atomikos log: ... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005200001 : stopping timer... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005200001 : disposing statehandler TERMINATED... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005200001 : disposed. 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005400001 entering state: ACTIVE 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] (1.5) executing task: com.atomikos.timing.PooledAlarmTimer@f5b3e61 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Creating composite transaction: 172.20.19.7.tm0005400001 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] createCompositeTransaction ( 300000 ): created new ROOT transaction with id 172.20.19.7.tm0005400001 17 Jul 16:36 [DEBUG] [misc.AppConfigCtrl.dummyUpdate] BEGIN dummyUpdate 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005500001 entering state: ACTIVE 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] (1.5) executing task: com.atomikos.timing.PooledAlarmTimer@4fb83a7a 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Creating composite transaction: 172.20.19.7.tm0005500001 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] createCompositeTransaction ( 300000 ): created new ROOT transaction with id 172.20.19.7.tm0005500001 17 Jul 16:36 [DEBUG] [config.AppConfigService.dummyUpdate_aroundBody0] AppConfig{id=1, name='dummy name', value='1405604218733'} 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning instance with id 172.20.19.7.tm0005500001 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning instance with id 172.20.19.7.tm0005500001 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning instance with id 172.20.19.7.tm0005500001 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] commit() done (by application) of transaction 172.20.19.7.tm0005500001 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005500001 entering state: COMMITTING 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005500001 entering state: TERMINATED 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005500001 : stopping timer... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005500001 : disposing statehandler TERMINATED... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] Coordinator 172.20.19.7.tm0005500001 : disposed. 17 Jul 16:36 [DEBUG] [misc.AppConfigCtrl.dummyUpdate] END dummyUpdate 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] AtomikosDataSoureBean 'sto-xa-db': getConnection ( null )... 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] AtomikosDataSoureBean 'sto-xa-db': init... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] an AtomikosXAPooledConnection with a SessionHandleState with 0 context(s): updating last time acquired 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] an AtomikosXAPooledConnection with a SessionHandleState with 0 context(s): no test query, skipping test 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] an AtomikosXAPooledConnection with a SessionHandleState with 0 context(s): creating connection proxy... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] a SessionHandleState with 0 context(s): notifySessionBorrowed 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] a TransactionContext: changing to state com.atomikos.datasource.xa.session.NotInBranchStateHandler@25e08d8c 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] atomikos connection proxy for Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b: calling toString... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] atomikos connection proxy for Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b: toString returning Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] an AtomikosXAPooledConnection with a SessionHandleState with 1 context(s): returning proxy Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] atomikos connection pool 'sto-xa-db': got connection from pool 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] atomikos connection pool 'sto-xa-db': current size: 0/1 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [INFO ] [logging.Slf4jLogger.logInfo] atomikos connection proxy for Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b: calling toString... 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] atomikos connection proxy for Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b: toString returning Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] AtomikosDataSoureBean 'sto-xa-db': returning Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] atomikos connection proxy for Pooled connection wrapping physical connection org.postgresql.jdbc4.Jdbc4Connection@3d08b17b: notifyBeforeUse a SessionHandleState with 1 context(s) 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] getCompositeTransaction() returning NULL! 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] a SessionHandleState with 1 context(s): checking XA context for transaction null 17 Jul 16:36 [DEBUG] [logging.Slf4jLogger.logDebug] a TransactionContext: changing to state null ... |