Our application uses Spring JMS with Websphere MQ, running on Websphere App Server. With upgrade to spring versions [details below], no messages are hitting the server. When I turned on the debug log level on spring, I could see some exception being thrown. Any help would be greatly appreciated.

Works fine with the following versions and configurations:
Spring framework: 2.0
Websphere: 6.1.0.17


















We recently upgraded to :
Spring framework: 2.5.4
Websphere: 6.1.0.23

After this upgrade, with the same config as above I see the following error:

Could not instantiate bean class [org.springframework.transaction.jta.WebSphereTrans actionManagerFactoryBean]: Constructor threw exception; nested exception is org.springframework.transaction.TransactionSystemE xception: Could not access WebSphere's TransactionManagerFactory.getTransactionManager method; nested exception is java.lang.ClassCastException: com.ibm.ws.Transaction.JTA.TranManagerSet
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.instantiateBean(Abstrac tAutowireCapableBeanFactory.java:881)

After reading, Spring's documentations, I made the following config:


With this, though I did not see an error in the log, no messages were hitting the app server. When I turned on the debug level for Spring logging, could see the following error:

DEBUG: [org.springframework.transaction.jta.WebSphereUowTr ansactionManager]
No JTA UserTransaction found at default JNDI location [java:comp/UserTransaction] [server.startup : 0]
org.springframework.jndi.TypeMismatchNamingExcepti on: Object of type [class com.ibm.ws.Transaction.JTA.UserTransactionImpl] available at JNDI location [java:c
omp/UserTransaction] is not assignable to [javax.transaction.UserTransaction]
at org.springframework.jndi.JndiTemplate.lookup(JndiT emplate.java:157)

On the server's JNDI tree, I could see the following entry:
/jta/usertransaction java.lang.Object

Using this JNDI name as below or with the JtaTransactionManager throws the error given below:




g/jmsDataQContext.xml]: Invocation of init method failed; nested exception is org.springframework.transaction.TransactionSyste
mException: JTA UserTransaction is not available at JNDI location [jta/usertransaction]; nested exception is org.springframewo
rk.jndi.TypeMismatchNamingException: Object of type [class com.ibm.ws.Transaction.JTA.UserTransactionImpl] available at JNDI l
ocation [jta/usertransaction] is not assignable to [javax.transaction.UserTransaction]

It appears like Spring is trying to look for a javax.transaction.UserTransaction implementation of transaction manger on the websphere and is not available. Any help with this would be greatly helpful.

Thank you,
Raj