我已经使用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(),这个连接会再次返回连接池吗?