WildFlyDataSource无法强制转换为javax.sql.XADataSource

时间:2017-02-14 11:41:43

标签: java datasource wildfly jta

我现在使用WildFly 10.1.0,最新的jdk,postgreSql 9.4。

我按照这些说明https://www.progress.com/tutorials/jdbc/understanding-jta,但在我的情况下是差异。 我必须使用依赖注入,因此数据源来自app server:

@Resource(lookup = "java:/PostgresXADS")
private DataSource dataSource;

当我在我的一个dao类中执行此代码时(确实如此),dataSource已经存在:

    XADataSource xaDataSource = (XADataSource)jdbcTemplate.getDataSource();
    XAConnection xaConnection = xaDataSource.getXAConnection();
    XAResource xaResource = xaConnection.getXAResource();
    Xid xid = new MyXid();
    xaResource.start(xid, XAResource.TMNOFLAGS);
    String sql = "select * from cart where customer_id=?;";
    List<Cart> lc = jdbcTemplate.query(sql, new Object[] {id}, ROW_MAPPER_C);
    xaResource.end(xid, XAResource.TMSUCCESS);

    int ret = xaResource.prepare(xid);
    if (ret == XAResource.XA_OK) {
        xaResource.commit(xid, false);
    }

    return lc;

我必须使用jdbcTemplate,但没有spring框架。

我得到了这个错误:

java.lang.ClassCastException: org.jboss.as.connector.subsystems.datasources.WildFlyDataSource cannot be cast to javax.sql.XADataSource

有什么不对?如果我做得好,如何将WildFlyDataSource转换为XADatasource?

0 个答案:

没有答案