Spring 如何使用JNDI查找Atomikos事务管理获取XADatasource

Spring 如何使用JNDI查找Atomikos事务管理获取XADatasource,spring,websphere-7,jta,xa,Spring,Websphere 7,Jta,Xa,我正在用Spring应用程序配置Atomikios TM API,以实现全局事务。由于Atomikios需要Xadasource才能工作,所以我已经完成了JNDI查找以获得相同的结果。但是,不幸的是,我在查找时遇到了以下错误 JNDI位置[jdbc/cuds]上可用的[class com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource]类型的对象不可分配给[javax.sql.XADataSource] 我在WebSphere7.0中使用Spring3.0/hibe

我正在用Spring应用程序配置Atomikios TM API,以实现全局事务。由于Atomikios需要Xadasource才能工作,所以我已经完成了JNDI查找以获得相同的结果。但是,不幸的是,我在查找时遇到了以下错误

JNDI位置[jdbc/cuds]上可用的[class com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource]类型的对象不可分配给[javax.sql.XADataSource]


我在WebSphere7.0中使用Spring3.0/hibernate,但我做得不对。请帮帮我。谢谢。

在jdbc/cuds下配置的数据源不是XADataSource,而是普通的数据源。您需要在WebSphere中更改数据源配置,我不知道如何做到这一点

然而,由于您使用的是WebSphere,它有自己的事务管理器,因此实际上不需要配置Atomikios。你可以使用

<tx:jta-transaction-manager>
或者org.springframework.transaction.jta.JtaTransactionManager/org.springframework.transaction.jta.WebSphereUowTransactionManager,但数据源仍然需要是XA。

XADataSource定义了JDBC提供程序和应用程序服务器之间的契约,并且只能在该上下文中使用。在应用程序中通过JNDI查找数据源时获得的数据源对象永远不会实现XADataSource接口,即使基础数据源配置为支持XA


如果您想使用自己的事务管理器,那么您还必须自己管理数据源。请注意,我个人不会这样做,强烈建议使用WebSphere的事务管理器。原因是分布式事务涉及许多细微之处,例如恢复和可疑事务,在应用程序中设置事务管理器不太可能达到与WebSphere事务管理器相同的健壮性级别。

感谢Philippe的提示……我在WAS中更改了数据源设置这对我来说很好。。。
<tx:jta-transaction-manager>