Hibernate 3.2
Spring 2.0.2
Jencks 2.0

I am having problems getting JTA to work properly within my Spring 2.0.2
application utilizing Jencks 2.0.
What I am attempting to do is use transaction suspension and using the
REQUIRES_NEW annotation to accomplish this. 
Note: I am only using one datasourcs so I am don't need any XA
 
The following is annotation that I have defined on a given service method.

@Transactional(propagation=Propagation.REQUIRES_NEW, readOnly = false,
rollbackFor = {BusinessException.class })
public void myTransactionalServiceMethod() throws BusinessException

@Transactional(propagation=Propagation.REQUIRED, readOnly = false,
rollbackFor = { {BusinessException.class, DataAccessException.class })
public void serviceMethodSave(Object o) throws BusinessException


When testing, I force the myTransactionalServiceMethod() method to throw a
BusinessException directly after the call to 
serviceMethodSave which issues a call to a Hibernate DAO to save the object.
I would expect the transaction would be 
rolledback but that is not happening. I am not getting any exceptions thrown
when the code is executed just unexpected results.

Here is my Spring / Hibernate configurations:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xmlns="http://www.springframework.org/schema/beans"; 
    xmlns:aop="http://www.springframework.org/schema/aop";
    xmlns:jee="http://www.springframework.org/schema/jee";
    xmlns:tx="http://www.springframework.org/schema/tx";
    xmlns:util="http://www.springframework.org/schema/util"; 
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd";>

        <tx:annotation-driven transaction-manager="jtaTransactionManager" />
    
        <bean id="transactionManager"
class="org.jencks.factory.TransactionManagerFactoryBean" />
                
        <bean id="connectionManager"
class="org.jencks.factory.ConnectionManagerFactoryBean">
                <property name="transactionManager" ref="transactionManager"/> 
        </bean>

        <bean id="jtaTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
                <property name="userTransaction" ref="transactionManager" />
        </bean>

        <bean id="jdbcManagedConnectionFactory"
class="org.jencks.tranql.DataSourceMCF">
                <property name="driverName"
value="${hibernate.connection.driver_class}"/>
                <property name="url" value="${hibernate.connection.url}"/>
                <property name="user" value="${hibernate.connection.username}"/>
                <property name="password" 
value="${hibernate.connection.password}"/>
        </bean>
   
        <bean id="dataSource"
class="org.jencks.factory.ConnectionFactoryFactoryBean">
                <property name="managedConnectionFactory"
ref="jdbcManagedConnectionFactory"/>
                <property name="connectionManager" ref="connectionManager"/>
        </bean>

        <bean id="sessionFactory" 
                
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
                <property name="jtaTransactionManager">
                                <bean factory-bean="jtaTransactionManager"
factory-method="getTransactionManager"/>
                </property> 
                
                <property name="dataSource">
                        <ref bean="dataSource" />
                </property>
                
            <property name="configurationClass">
                <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
        
        <property name="annotatedClasses">
                .......
        </property>

        <property name="hibernateProperties">
               <props>
                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                 <prop
key="hibernate.show_sql">${hibernate.connection.show_sql}</prop>
                 <prop 
key="hibernate.debug">${hibernate.connection.debug}</prop>
                   
                <prop 
key="hibernate.bytecode.use_reflection_optimizer">true</prop>
                <prop
key="hibernate.connection.release_mode">after_transaction</prop>
                        <prop 
key="hibernate.cglib.use_reflection_optimizer">true</prop>
                <prop
key="hibernate.transaction.flush_before_completion">true</prop>
                <prop
key="hibernate.transaction.auto_close_session">true</prop>
                <prop
key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
                <prop
key="hibernate.current_session_context_class">thread</prop> 

                </props>
            </property>
        
        </bean>

</beans>

If anyone could provide any insight as to why I may be experiencing this
behavior I would greatly appreciate it.

Cheers,
Zenon
-- 
View this message in context: 
http://www.nabble.com/JTA-Spring-2.0.2-%2B-Jencks-2.0-%2B-Hibernate-3.2.1---Transaction-Rollback-Problem-tf3236138.html#a8993852
Sent from the jencks - user mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to