I had:
Code:
<beans>
<!-- ========================= DATASOURCE DEFINITION ========================= -->
<!-- JNDI DataSource for J2EE environments -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"><value>java:/jdbc/MyAppDatasource</value></property>
</bean>
<!-- ====================== End of DATASOURCE DEFINITION ====================== -->
<!-- ===================== TRANSACTION MANAGER DEFINITION ========================= -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
<!-- ===================== TRANSACTION MANAGER DEFINITION ========================= -->
</beans>
and when i replaced transaction manager with HibernateTransactionManager it started working as expected:
Code:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"><value>java:/jdbc/myAppDatasource</value></property>
</bean>
<!-- ====================== End of DATASOURCE DEFINITION ====================== -->
<!-- ===================== TRANSACTION MANAGER DEFINITION ========================= -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="dataSource"><ref bean="dataSource"/></property>
<property name="sessionFactory"><ref bean="sessionFactory"/></property>
</bean>
The rest of relevant configuration:
Code:
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"><ref bean="dataSource"/></property>
<property name="mappingLocations"><ref bean="hibernateMappingLocations"/></property>
<property name="hibernateProperties"><ref bean="hibernateProperties"/></property>
<!-- applicationContext sessionFactory merge-point -->
</bean>
<!-- The Hibernate interceptor -->
<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
<property name="sessionFactory"><ref bean="sessionFactory"/></property>
<!-- applicationContext hibernateInterceptor merge-point -->
</bean>
<bean id="serviceTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager"><ref bean="transactionManager"/></property>
<property name="transactionAttributeSource">
<value>
com.myapp.deployment.service.DeploymentService.parse=PROPAGATION_REQUIRED
</value>
</property>
<!-- applicationContext serviceTransactionInterceptor merge-point -->
</bean>
But the question stays.... why it doesn't work with DataSourceTransactionManager?