Bitronix Roll back is not working

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Bitronix Roll back is not working

ganeshram
This post has NOT been accepted by the mailing list yet.
Hi,
         I am using bitronix with spring 3 for distribute transaction (More than one db using). Whenever any exception occurs, bitronix is not rollback the transaction. Some data in half way is committed into DB. Pls help me to come out from this.  

I am using Tomat 6.1.23
Spring 3
Oracle 10g

Here is my configuration,
I am using bitronix 2.1.3 version,

Data Source 1:
----------------------
<bean id="dataSourceOne"
                class="org.apache.commons.dbcp.BasicDataSource"
                destroy-method="close">
                <property name="driverClassName">
                        <value>${dbcp.driverClassName}</value>
                </property>
                <property name="url">
                        <value>${dbcp.url}</value>
                </property>
                <property name="username">
                        <value>${dbcp.username}</value>
                </property>
                <property name="password">
                        <value>${dbcp.password}</value>
                </property>
                <property name="maxIdle">
                        <value>${dbcp.maxIdle}</value> 
                </property>
                <property name="maxWait">
                        <value>${dbcp.maxWait}</value>
                </property>
                <property name="maxActive">
                        <value>${dbcp.maxActive}</value>
                </property>
                <property name="removeAbandoned">
                        <value>${dbcp.removeAbandoned}</value>
                </property>
                <property name="removeAbandonedTimeout">
                        <value>${dbcp.removeAbandonedTimeout}</value>
                </property>
                <property name="validationQuery">
                        <value>${dbcp.validationQuery}</value>
                </property>
                <property name="testOnBorrow"><value>${dbcp.testOnBorrow}</value>
                </property>
                <property name="testOnReturn"><value>${dbcp.testOnReturn}</value>
                </property>
                <property name="testWhileIdle"><value>${dbcp.testWhileIdle}</value>
                </property>
                <property name="timeBetweenEvictionRunsMillis"><value>${dbcp.timeBetweenEvictionRunsMillis}</value>
                </property>
                <property name="minEvictableIdleTimeMillis"><value>${dbcp.minEvictableIdleTimeMillis}</value>
                </property>
                <property name="numTestsPerEvictionRun"><value>${dbcp.numTestsPerEvictionRun}</value>
                </property>               
        </bean>

Data Source 2:
----------------------
<bean id="dataSourceTwo"
                class="org.apache.commons.dbcp.BasicDataSource"
                destroy-method="close">
                <property name="driverClassName">
                        <value>${dbcp.driverClassName}</value>
                </property>
                <property name="url">
                        <value>${dbcp.url}</value>
                </property>
                <property name="username">
                        <value>${dbcp.username}</value>
                </property>
                <property name="password">
                        <value>${dbcp.password}</value>
                </property>
                <property name="maxIdle">
                        <value>${dbcp.maxIdle}</value> 
                </property>
                <property name="maxWait">
                        <value>${dbcp.maxWait}</value>
                </property>
                <property name="maxActive">
                        <value>${dbcp.maxActive}</value>
                </property>
                <property name="removeAbandoned">
                        <value>${dbcp.removeAbandoned}</value>
                </property>
                <property name="removeAbandonedTimeout">
                        <value>${dbcp.removeAbandonedTimeout}</value>
                </property>
                <property name="validationQuery">
                        <value>${dbcp.validationQuery}</value>
                </property>
                <property name="testOnBorrow"><value>${dbcp.testOnBorrow}</value>
                </property>
                <property name="testOnReturn"><value>${dbcp.testOnReturn}</value>
                </property>
                <property name="testWhileIdle"><value>${dbcp.testWhileIdle}</value>
                </property>
                <property name="timeBetweenEvictionRunsMillis"><value>${dbcp.timeBetweenEvictionRunsMillis}</value>
                </property>
                <property name="minEvictableIdleTimeMillis"><value>${dbcp.minEvictableIdleTimeMillis}</value>
                </property>
                <property name="numTestsPerEvictionRun"><value>${dbcp.numTestsPerEvictionRun}</value>
                </property>               
        </bean>

<bean id="sessionFactoryOne"
                class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
                lazy-init="true" depends-on="transactionManager">
                <property name="dataSource">
                        <ref bean="dataSourceOne" />
                </property>
               
                <property name="hibernateProperties">
                        <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
                            <property name="locations">
                              <list>
                                  <value>hibernate.properties</value>
                              </list>
                            </property>
                          </bean>
                </property>
        </bean>
           
   
        <bean id="sessionFactoryTwo"
                class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
                lazy-init="true" depends-on="transactionManager">
                <property name="dataSource">
                        <ref bean="dataSourceTwo" />
                </property>
               
                <property name="hibernateProperties">
                        <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
                            <property name="locations">
                              <list>
                                  <value>hibernate.properties</value>
                              </list>
                            </property>
                          </bean>
                </property>
        </bean>

 
        <bean id="btmConfig" factory-method="getConfiguration" class="bitronix.tm.TransactionManagerServices">
    <property name="serverId" value="spring-btm" />
        </bean>
 
       
        <bean id="BitronixTransactionManager" factory-method="getTransactionManager"
    class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig" destroy-method="shutdown" />
       
  <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager" ref="BitronixTransactionManager" />
    <property name="userTransaction" ref="BitronixTransactionManager" />
        </bean>

<bean id="transactionInterceptor"
                class="org.springframework.transaction.interceptor.TransactionInterceptor">
                <property name="transactionManager">
                        <ref bean="transactionManager" />
                </property>
                <property name="transactionAttributes">
                        <props>
                                <prop key="execute*">
                                        PROPAGATION_REQUIRED,-ApplicationException, -Exception
                                </prop>
                               
                                <prop key="*">PROPAGATION_NOT_SUPPORTED</prop>
                        </props>
                </property>
        </bean>       

<bean id="beanNameAutoProxyCreator"
                class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
                <property name="beanNames" value="*Txn" />
                <property name="interceptorNames">
                        <list>
                                <value>transactionInterceptor</value>
                        </list>
                </property>
        </bean>