2013-03-04 79 views
1

我正在使用我的Spring應用程序配置Atomikios TM API來實現全局事務。由於Atomikios要求XADatasource正常工作,所以我已經完成了JNDI查找以獲得相同的結果。但是,不幸的是,我在查找時遇到了以下錯誤。如何使用JNDI獲取XADatasource查找Atomikos事務管理

對象類型的[類com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource]可在JNDI位置[JDBC /嚼團]是不能分配給[javax.sql.XADataSource中]

<jee:jndi-lookup id="dataSourceCu" jndi-name="jdbc/cuds" cache="true" resource-ref="true" lookup-on-startup="true" expected-type="javax.sql.XADataSource" /> 
<jee:jndi-lookup id="dataSourceGodb" jndi-name="jdbc/pushpullds" cache="true" resource-ref="true" lookup-on-startup="true" expected-type="javax.sql.XADataSource" /> 

我正在使用Spring 3.0/hibernate和WebSphere 7.0.Where我做錯了。請幫幫我。謝謝。

回答

0

jdbc/cuds下配置的數據源不是XADataSource,而是正常的數據源。您需要更改WebSphere中的數據源配置(我不知道如何執行此操作)。

但是,由於您在WebSphere上擁有自己的事務管理器,所以實際上不需要配置Atomikios。您可以使用

<tx:jta-transaction-manager> 

org.springframework.transaction.jta.JtaTransactionManager/org.springframework.transaction.jta.WebSphereUowTransactionManager但數據源仍需要XA。

+0

感謝Philippe的提示......我改變了我在WAS中的數據源設置,它對我來說工作得很好...... – Manu 2013-03-23 14:40:46

0

XADataSource定義了JDBC提供程序和應用程序服務器之間的契約,只能在該上下文中使用。在您的應用程序中通過JNDI查找數據源時得到的DataSource對象將永遠不會實現XADataSource接口,即使基礎數據源配置爲支持XA。

如果您想使用自己的事務管理器,那麼您還必須自己管理數據源。請注意,我個人不會這麼做,並強烈建議使用WebSphere的事務管理器來代替。原因是分佈式事務涉及很多微妙之處(例如恢復和不確定事務),並且在應用程序內部設置事務管理器不太可能實現與WebSphere事務管理器相同的健壯性水平。