当前位置: 首页 > 知识库问答 >
问题:

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

王昆
2023-03-14

我有使用数据库的主要数据源,它使用一些连接池。现在我想创建第二个数据源,它将使用相同的连接池在单独的事务中执行日志记录操作,然后是主数据库事务!据我从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;
    }

共有1个答案

劳韬
2023-03-14

我已经弄明白了。有必要启动一个新线程,然后将创建一个新事务。请参见在回滚过程中写入数据库日志

 类似资料:
  • 我试图在glassfish 5中为Microsoft SQL Server数据库创建一个jdbc连接池。我使用的是和最新的SQLExpress服务器版本(MSSQL14.SQLExpress) 资源类型: 数据源类名: Ping SQL_TIRE_POOL的连接池失败。无法分配连接,原因是:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接。错误:“unsupporte

  • 我正在尝试创建一个从glassfish到Oracle的连接池。当我使用命令行时,在创建过程中一切似乎都正常,但应用程序崩溃,出现以下异常:

  • 我以前也这样做过,但由于某种原因,我在创建这个连接池时确实遇到了一些困难。在创建连接池后ping连接池时,我收到以下错误: 我在创建池时提供的信息如下: : 3306; : bondsaverdb; :localhost; : root; :我的密码; 有什么我遗漏的吗?我有拼写错误或输入错误的地方吗? 先谢谢!

  • 我的WebApp使用多个数据库,我尝试使用GlassFish连接池来管理连接,但我发现配置示例只使用一个数据库。 那么,我该怎么办?创建与我正在使用的数据库数量相同的连接池,或者是否有方法将一个池配置为多个数据库?

  • 我正在将Dropwizard与HikariCP连接池一起使用,但我想这可能与使用任何连接池有关。如何配置Dropwizard,以便在应用程序关闭时调用HikariCP数据源的shutdown()方法?有可能吗? HikariCP常见问题解答指出,Spring或其他IOC容器使之成为可能,但我目前没有使用DI框架,只有Dropwizard。

  • 我想创建一个类的实例,该类可以访问底层的嵌入式derby数据库,并使用声明性服务将该类传递给绑定到数据库包的每个包。 我在derby留档中看到,为多个线程共享一个连接有很多陷阱。所以我在考虑为我正在创建的类的每个实例创建一个连接。由于我只想要一种非常简单的方法来创建多个连接并管理它们,因此在这里使用“MiniConnectionPoolManager”似乎是一个不错的选择。derby的示例代码如下