Java 使用Glassfish中的现有连接池为第二个数据源创建JDBC事务

Java 使用Glassfish中的现有连接池为第二个数据源创建JDBC事务,java,jdbc,transactions,glassfish,connection,Java,Jdbc,Transactions,Glassfish,Connection,我有使用数据库的主要数据源,它使用一些连接池。现在我想创建第二个数据源,它将使用相同的连接池在单独的事务中执行日志记录操作,然后是主数据库事务!据我从Glassfish了解,如果多个数据源使用同一个连接池,那么它们将共享一个事务,直到连接未关闭为止(我可能错了,请纠正我) 那么,在获得到数据源的连接时,是否有方法启动新事务?通过设置TransactionIsolation可能是什么 通过以下方式检索连接: private synchronized Connection getConnection

我有使用数据库的主要数据源,它使用一些连接池。现在我想创建第二个数据源,它将使用相同的连接池在单独的事务中执行日志记录操作,然后是主数据库事务!据我从Glassfish了解,如果多个数据源使用同一个连接池,那么它们将共享一个事务,直到连接未关闭为止(我可能错了,请纠正我)

那么,在获得到数据源的连接时,是否有方法启动新事务?通过设置TransactionIsolation可能是什么

通过以下方式检索连接:

private synchronized Connection getConnection() {
        if (connection == null) {
            try {
                final Context ctx = new InitialContext();
                final DataSource ds = (DataSource) ctx.lookup(getDataSourceLookupAddress());
                connection = ds.getConnection();
            } catch (final NamingException e) {
                errorHandler.error("Datasource JNDI lookup failed: " + dataSourceLookupAddress + "!");
                errorHandler.error(e.toString());
            } catch (final SQLException e) {
                errorHandler.error("Sql connection failed to " + dataSourceLookupAddress + "!");
                errorHandler.error(e.toString());
            }
        }
        return connection;
    }

我已经弄明白了。有必要启动一个新线程,然后创建一个新事务。另见