2013-03-04 3 views
1

Я настраиваю API Atomikios TM с помощью моего приложения Spring для достижения глобальной транзакции. Поскольку Atomikios требует XADatasource для работы, поэтому я сделал JNDI, чтобы получить то же самое. Но, к сожалению, я получаю следующие ошибки при просмотре.Как получить XADatasource с помощью JNDI искать Atomicos Transaction Management

Объект типа [класс 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. Где я делаю неправильно. Пожалуйста, помогите мне. Благодарю.

ответ

0

Источник данных, сконфигурированный под jdbc/cuds, не является XADataSource, но является нормальным. Вам нужно изменить конфигурацию источника данных в WebSphere (я не знаю, как это сделать).

Однако, поскольку вы находитесь в WebSphere, у которого есть собственный менеджер транзакций, на самом деле нет необходимости в настройке Atomikios. Вы можете использовать

<tx:jta-transaction-manager> 

или org.springframework.transaction.jta.JtaTransactionManager/org.springframework.transaction.jta.WebSphereUowTransactionManager но источник данных по-прежнему должен быть XA.

+0

Спасибо Филиппу за подсказку ... Я изменил настройки источника данных в WAS, и это сработало хорошо для меня ... – Manu

0

XADataSource определяет контракт между поставщиком JDBC и сервером приложений и может использоваться только в этом контексте. Объект DataSource, который вы получаете при поиске источника данных через JNDI в своем приложении, никогда не будет реализовывать интерфейс XADataSource, даже если базовый источник данных настроен для поддержки XA.

Если вы хотите использовать свой собственный менеджер транзакций, вам также придется самостоятельно управлять источниками данных. Обратите внимание, что лично я бы этого не сделал и настоятельно советовал вместо этого использовать диспетчер транзакций WebSphere. Причина заключается в том, что распределенные транзакции включают в себя множество тонкостей (например, транзакции восстановления и сомнений), и маловероятно, что настройка менеджера транзакций внутри приложения обеспечит такой же уровень надежности, что и менеджер транзакций WebSphere.

Смежные вопросы