2016-12-12 17 views
2

XADataSourceを検索しようとしているサーブレットWebSphere 8.5があります。しかし、私はこの例外を取得:XADataSourceを参照しようとするとClassCastExceptionが発生する

java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource incompatible with javax.sql.XADataSource" 

これは、私がデータソースを検索する方法である:

private String getName(String fromCls, String listCls, String id) throws Exception { 
    InitialContext ctx = new InitialContext(); 
    // ClassCastException happens here 
    XADataSource ds = (XADataSource)ctx.lookup("jdbc/DBXA"); 

    XAConnection dsxaconn = ds.getXAConnection(); 
    Connection con = dsxaconn.getConnection(); 
    // ... 
} 

答えて

2

これは混乱しやすいものです。 XADataSourceは、アプリケーションサーバーが内部的に使用するためのものです。

アプリケーションコードでは、javax.sql.DataSourceを使用し、WebSphere構成でXADataSourceを選択します(既に行っている可能性があります)。

DataSourceがXADataSourceに設定されている場合、タイプがXADataSourceに設定されている場合、アプリケーションサーバーは自動的にgetXAConnection().getConnection()を呼び出します。

+0

私はあなたのお勧めを試みました。スクリプトが例外をスローしないことは明らかです。しかし、アプリケーションがXAConnectionを取得しているようではありません。 – GregV

+0

が正しい。アプリケーションサーバーは、XADataSourceもXAConnectionも公開しません。 XAConnectionではなくConnectionを使用してください。 XAで構成されたデータソースからのものであれば、XA対応となります。 –

+0

これはまさに私がやったことでしたが、それは役に立ちませんでした:-( InitialContext ctx = new InitialContext(); DataSource ds =(DataSource)ctx.lookup( "jdbc/DSXA"); 接続dsconn = ds.getConnection 私はそれがサーバーの問題を応用していると思います DriverManagerを使用していて、正しく動作しました – GregV

関連する問題