我现在使用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?