1

グローバルトランザクションを実現するために、SpringアプリケーションでAtomikiosTMAPIを構成しています。Atomikiosが機能するにはXADatasourceが必要なので、同じものを取得するためにJNDIルックアップを実行しました。しかし、残念ながら、ルックアップを実行しているときに次のエラーが発生します。

JNDIロケーション[jdbc/cuds]で使用可能なタイプ[classcom.ibm.ws.rsadapter.jdbc.WSJdbcDataSource]のオブジェクトは、[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" />

WebSphere7.0でSpring3.0/hibernateを使用しています。間違っているところ。私を助けてください。ありがとう。

4

2 に答える 2

0

XADataSourceJDBCプロバイダーとアプリケーションサーバー間のコントラクトを定義し、そのコンテキストでのみ使用できます。基盤となるデータソースがXAをサポートするように構成されている場合でも、DataSourceアプリケーションでJNDIを介してデータソースを検索するときに取得するオブジェクトは、インターフェイスを実装しません。XADataSource

独自のトランザクションマネージャーを使用する場合は、データソースも自分で管理する必要があります。個人的にはそうしないことに注意してください。代わりにWebSphereのトランザクションマネージャーを使用することを強くお勧めします。その理由は、分散トランザクションには多くの微妙な点が含まれ(たとえば、リカバリーおよび未確定トランザクション)、アプリケーション内にトランザクション・マネージャーをセットアップしても、WebSphereのトランザクション・マネージャーと同じレベルの堅牢性が達成される可能性は低いためです。

于 2013-03-05T19:13:28.350 に答える
0

で構成されたデータソースは通常のものでjdbc/cudsはありません。XADataSourceWebSphereでデータソース構成を変更する必要があります(これを行う方法がわかりません)。

ただし、独自のトランザクションマネージャーを備えたWebSphereを使用しているため、Atomikiosを構成する必要はありません。あなたはどちらかを使うことができます

<tx:jta-transaction-manager>

またはorg.springframework.transaction.jta.JtaTransactionManager/org.springframework.transaction.jta.WebSphereUowTransactionManagerただし、データソースはXAである必要があります。

于 2013-03-04T16:03:02.687 に答える