pratikbm
asked on
JTA Transactions Spring, Hibernate in WebSphere
Hi,
I am using Spring, Hibernate and Websphere for an application. I want to use JTA Transaction.
All my transactions are rolled back, I am getting this message - WLTC0032W: One or more local transaction resources were rolled back during the cleanup of a LocalTransactionContainmen t. I think that Hibernate is starting its own transactions and they are rolled back by Websphere Global Transactions. How do I make Hibernate use Websphere JTA Transactions?
I tried several combinations but I think I am missing something.
Any help would be greatly appreciated.
Configuration is as follows -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
" http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="ccmDataSource" class="org.springframework .jndi.Jndi ObjectFact oryBean">
<property name="jndiName" value="ccmds"/>
</bean>
<bean id="mySessionFactory" class="org.springframework .orm.hiber nate3.Loca lSessionFa ctoryBean" >
<property name="dataSource" ref="ccmDataSource"/>
<property name="mappingResources">
<list>
<value>/web-inf/mapping/Se ctions.hbm .xml</valu e>
</list>
</property>
<property name="hibernateProperties" >
<value>
org.hibernate.dialect.Orac leDialect
</value>
</property>
<!--
<property name="hibernateProperties" >
<props>
<prop key="hibernate.dialect">or g.hibernat e.dialect. Oracle9Dia lect</prop >
<prop key="hibernate.transaction .factory_c lass">org. hibernate. transactio n.CMTTrans actionFact ory</prop>
<prop key="hibernate.transaction .manager_l ookup">org .hibernate .transacti on.Websphe rExtendedJ TATransact ionLookup< /prop>
<prop key="hibernate.transaction .flush_bef ore_comple tion">true </prop>
<prop key="hibernate.transaction .auto_clos e_session" >true</pro p>
</props>
</property>
-->
</bean>
<bean id="myTxManager" class="org.springframework .transacti on.jta.Jta Transactio nManager"/ >
<!--
<bean id="wsJta" class="org.springframework .transacti on.jta.Web SphereTran sactionMan agerFactor yBean"/>
<bean id="transactionManager" class="org.springframework .transacti on.jta.Jta Transactio nManager" >
<property name="userTransactionName" ><null /></property>
<property name="transactionManager" ref="wsJta" />
</bean>
-->
<bean id="templateDesignDAO" class="com.ubs.ccm.dao.Tem plateDesig nDAOImpl">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<bean id="templateDesignService" class="org.springframework .transacti on.interce ptor.Trans actionProx yFactoryBe an">
<property name="proxyInterfaces">
<list>
<value>
com.ubs.ccm.dao.TemplateDe signDAO
</value>
</list>
</property>
<property name="target">
<ref bean="templateDesignDAO"/>
</property>
<property name="transactionManager">
<ref bean="myTxManager"/>
</property>
<property name="transactionAttribute s">
<props>
<prop key="addSection">
PROPAGATION_REQUIRED,ISOLA TION_DEFAU LT
</prop>
</props>
</property>
</bean>
</beans>
I am using Spring, Hibernate and Websphere for an application. I want to use JTA Transaction.
All my transactions are rolled back, I am getting this message - WLTC0032W: One or more local transaction resources were rolled back during the cleanup of a LocalTransactionContainmen
I tried several combinations but I think I am missing something.
Any help would be greatly appreciated.
Configuration is as follows -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
" http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="ccmDataSource" class="org.springframework
<property name="jndiName" value="ccmds"/>
</bean>
<bean id="mySessionFactory" class="org.springframework
<property name="dataSource" ref="ccmDataSource"/>
<property name="mappingResources">
<list>
<value>/web-inf/mapping/Se
</list>
</property>
<property name="hibernateProperties"
<value>
org.hibernate.dialect.Orac
</value>
</property>
<!--
<property name="hibernateProperties"
<props>
<prop key="hibernate.dialect">or
<prop key="hibernate.transaction
<prop key="hibernate.transaction
<prop key="hibernate.transaction
<prop key="hibernate.transaction
</props>
</property>
-->
</bean>
<bean id="myTxManager" class="org.springframework
<!--
<bean id="wsJta" class="org.springframework
<bean id="transactionManager" class="org.springframework
<property name="userTransactionName"
<property name="transactionManager" ref="wsJta" />
</bean>
-->
<bean id="templateDesignDAO" class="com.ubs.ccm.dao.Tem
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<bean id="templateDesignService"
<property name="proxyInterfaces">
<list>
<value>
com.ubs.ccm.dao.TemplateDe
</value>
</list>
</property>
<property name="target">
<ref bean="templateDesignDAO"/>
</property>
<property name="transactionManager">
<ref bean="myTxManager"/>
</property>
<property name="transactionAttribute
<props>
<prop key="addSection">
PROPAGATION_REQUIRED,ISOLA
</prop>
</props>
</property>
</bean>
</beans>
ASKER
I had tried this approach and it didn't work.
The problem is with how websphere server handles transactions. The problem was solved after making changes to web.xml. In webspher extensions, setting "Unresolved Action" to Commit under Local Transaction solved this problem.
Thanks,
Hemant
The problem is with how websphere server handles transactions. The problem was solved after making changes to web.xml. In webspher extensions, setting "Unresolved Action" to Commit under Local Transaction solved this problem.
Thanks,
Hemant
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Try this
<property name="org.hibernate.transa
instead of
<prop key="hibernate.transaction
<prop key="hibernate.transaction
Regards,
gibu_george