Java 尝试查找XADataSource时发生ClassCastException

Java 尝试查找XADataSource时发生ClassCastException,java,jdbc,websphere,Java,Jdbc,Websphere,我有一个servlet WebSphere8.5,我试图在其中查找XADataSource。但是,我有一个例外: java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource incompatible with javax.sql.XADataSource" 以下是我查找数据源的方式: private String getName(String fromCls, String listCls, String i

我有一个servlet WebSphere8.5,我试图在其中查找XADataSource。但是,我有一个例外:

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();
  // ...
}

这是一件容易混淆的事情。XADataSource仅供应用程序服务器内部使用

在应用程序代码中,您应该只使用
javax.sql.DataSource
,并在WebSphere配置中选择XADataSource(您可能已经这样做了)


当您的数据源配置为XADataSource时,当类型配置为XADataSource时,应用程序服务器将自动调用
getXAConnection().getConnection()

我尝试了您的建议。很明显,脚本不会抛出异常。但应用程序似乎并没有获得XAConnection.correct。应用服务器既不公开Xadasource,也不公开XAConnection。只需使用连接,而不是XAConnection。如果它来自XA配置的数据源,那么它将支持XA。这正是我所做的,但它没有帮助:-(InitialContext ctx=new InitialContext();数据源ds=(datasource)ctx.lookup(“jdbc/DSXA”);连接dsconn=ds.getConnection();我认为这是应用程序在服务器上的问题。我使用了DriverManager,现在它工作正常了。新的错误是什么?您仍然得到classcastexception吗?您不应该得到,因为wsjdbcdatasource实现了javax.sql.DataSource。使用驱动程序管理器是不好的,因为它绕过了应用程序服务器jdbc层,所以在这一点上,您也不介意javaSEIt是现在不要抛出任何异常,但新问题与包装我代码的其他应用程序有关。因此,在这种情况下,我必须使用驱动程序管理器。感谢您的帮助。