I used JTA Transaction manager as suggested.
Code:
<!-- DataSource Definition -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/itemsub/db2"/>
</bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ><bean class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/></property>
</bean>
Soon after I trigger mdb by passing message into mq, spring batch is getting executed, and at end I'm getting folloiwng exception and listener port is getting stopped.
Code:
[6/8/09 17:40:41:099 CDT] 0000001e ServerSession W WMSG0031E: Exception processing JMS Message for
MDB BatchListener, JMSDestination jms/itemsub/batchQ : javax.ejb.TransactionRolledbackLocalException: ; nested exception is: com.ibm.websphere.csi.CSITransactionRolledbackException:
com.ibm.websphere.csi.CSITransactionRolledbackException:
at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:769)
at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:181)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:581)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3876)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:107)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:132)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:481)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510)
javax.ejb.TransactionRolledbackLocalException: ; nested exception is: com.ibm.websphere.csi.CSITransactionRolledbackException:
at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:769)
at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:181)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:581)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3876)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:107)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:132)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:481)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510)
Caused by: com.ibm.websphere.csi.CSITransactionRolledbackException:
... 8 more
[6/8/09 17:40:41:114 CDT] 0000001e ServerSession W WMSG0036E: Maximum message delivery retry count of 0 reached for MDB BatchListener, JMSDestination jms/itemsub/batchQ, MDBListener stopped
[6/8/09 17:40:40:833 CDT] 0000001e SystemErr R 221
[6/8/09 17:40:44:880 CDT] 00000031 MDBListenerIm I WMSG0043I: MDB Listener itemsubListenerPort stopped for JMSDestination jms/itemsub/batchQ
Its appearing like there is some conflict at commiting the transaction, and websphere trying to roleback the uncommited transaction and hence throwing the error.
In fact there are no excptions coming from spring batch.
Please suggest.
Thanks