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

时间:2013-07-11 13:13:13

标签: jdbc connection jndi jta pool

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

我的应用程序需要在运行时使用TEMPERORY MYSQL表创建。所以我正在使用 以下代码从glassfish的JNDI Datasource获取连接。

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

public Connection getConnection() throws SQLException {
    Connection con = dataSource.getConnection();
    return con;
}

现在,我的问题是,我可以对此Connection对象执行setAutoCommit(false),commit()和rollback(),close()吗? 在论坛中,我读到,我们不应该在Connection对象上调用这些方法,如果我们从Container Managed Distributed Transaction(XADataSource)获取Connection作为其涉及的分布式事务。 但是,我从非分布式事务中得到这个连接。所以,我可以正确调用这些方法???

其他问题是,执行db操作后,如果我调用con.close(),这个连接会再次返回连接池吗?

0 个答案:

没有答案