在来自CMT JTA的JDBC连接上执行commit()、rollabck()、setAutoCommit(false)

在来自CMT JTA的JDBC连接上执行commit()、rollabck()、setAutoCommit(false),jdbc,connection,jndi,jta,pool,Jdbc,Connection,Jndi,Jta,Pool,我已经用ResourceType作为ConnectionPoolDataSource创建了glassfish连接池。因此,glassfish将使用本机连接池实现连接池。我没有使用Xadasource ResourceType,因为我不想执行任何分布式事务 我的应用程序需要在运行时使用临时MYSQL表创建。所以我用 下面是从glassfish的JNDI数据源获取连接的代码 @Resource(mappedName = "jdbc/xxxxx") private DataSource dataSou

我已经用ResourceType作为ConnectionPoolDataSource创建了glassfish连接池。因此,glassfish将使用本机连接池实现连接池。我没有使用Xadasource ResourceType,因为我不想执行任何分布式事务

我的应用程序需要在运行时使用临时MYSQL表创建。所以我用 下面是从glassfish的JNDI数据源获取连接的代码

@Resource(mappedName = "jdbc/xxxxx")
private DataSource dataSource;

public Connection getConnection() throws SQLException {
    Connection con = dataSource.getConnection();
    return con;
}
现在,我的问题是,我能在这个连接对象上执行setAutoCommit(false)、commit()和rollback()、close()吗???? 在论坛中,我读到,如果我们从容器管理的分布式事务(XADataSource)获取连接,因为它涉及分布式事务,那么我们不应该对连接对象调用这些方法。 但是,我是从非分布式事务中获得这个连接的。所以,我可以调用这些方法,对吗


另一个问题是,在执行db操作后,如果调用con.close(),此连接是否会再次返回到连接池?

我想我可以调用这些方法。因为mysql“show processlist”命令将最大连接数显示为8(这是我在glassfish admin protal连接池设置页面中设置的最小连接数)。因此,我认为对从CMT非分布式获得的连接调用所有这些方法是安全的。