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

JDBC连接池管理器

邢洋
2023-03-14

我们正在用Java重写来自PHP的web应用程序。我认为,但我不是很确定,我们可能会在连接池方面遇到问题。应用程序本身是多租户的,是“独立数据库”和“独立模式”的组合。

对于每个Postgres数据库服务器实例,可以有一个以上的数据库(命名为schemax_XXX),其中包含一个以上的模式(模式是租户)。注册时,可能会发生以下两种情况之一:

  1. 在编号最高的schema_XXX数据库中创建新的租户模式

所有租户都通过中央注册中心(也是Postgres数据库)知道。当建立会话时,注册表将解析租户的主机、数据库和模式,并为该HTTP请求建立数据库会话。

现在,我想我在这里看到的问题是双重的:

  1. JDBC连接池是在应用程序启动时定义的。我的意思是,所有数据库(主机数据库)在启动时都是已知的。这与注册过程相冲突

那么,甚至可以假设连接池可以用于此目的吗?

对于第一个问题,我想可以使用支持JMX的池,并且在创建新的schemas\u XXX数据库时创建一个新的数据源。更大的问题是大量的资金池。为此,我想应该使用某种类型的池管理器来终止没有打开连接的池(并按需启动池)。我没有找到任何支持这一点的东西。

我有什么选择?或者我应该咬紧牙关,退回到进程外连接池(如PgBouncer)中,并为每个请求建立一个普通的JDBC连接,就像我们现在用PHP处理它一样?

共有1个答案

龙星渊
2023-03-14

几件事:

  1. 连接池不需要仅在应用程序启动时实例化。你可以随时创建或销毁它们

祝你好运

 类似资料:
  • 我使用作为我的数据源实现,我的代码获取连接并关闭连接,如下所示: 当我完成连接工作时,我将关闭它 我的问题是:确实是关闭的,所以当连接像一样关闭时,数据源是如何工作的。我听说datasource connection close并不是真正的close,只是release,但我在datasource类中找不到release API。我想知道datasource如何管理数据库连接的创建、关闭和释放。

  • 问题内容: 我的问题如下。我需要一个类,该类可以作为指向Web系统中数据库连接的单点,以免让一个用户拥有两个打开的连接。我需要使其尽可能最佳,并且应该管理系统中的每个事务。换句话说,只有该类才能实例化DAO。为了使它更好,它还应该使用连接池!我该怎么办? 问题答案: 您将需要实现 DAO管理器 。我从这个网站获得了主要思想,但是我做了自己的实现,解决了一些问题。 首先,您必须配置一个 连接池 。连

  • 前几天我经历了应用程序的中断,我需要了解以后如何避免这种情况。 我们有一个运行在Tomcat7上的基于Java的web应用程序。应用程序连接到几个不同的数据源,包括Oracle数据库。 下面是我对连接验证的理解。 连接在空闲时(testWhileIdle=false)、借用时(testOnBorrow=false)、返回时(testOnReturn=false) 由于timeBetweenEvic

  • 我们有一个spring-boot应用程序,它使用嵌入式tomcat进行部署,并使用MySQL后端的默认tomcat-jdbc连接池,而没有为MySQL或tomcat端定制。 该应用程序有一些调度程序,它们主要在一天中的特定时间运行,即在昨天的最后一次cron运行和今天的第一次cron运行之间,有超过9个小时的间隙。然而,无论何时cron在早期运行,它都从未遇到过空闲连接问题。 现在我们看到一条错误

  • 我们刚刚从dbcp迁移到tomcat jdbc连池。我们在加载中尝试了系统,收到了以下异常: 请注意: 不忙的连接在哪里?忙的数字在这之后一直在下降,但我们仍然没有得到任何连接。 有什么想法吗? 配置: env:ubuntu和tomcat 6. db-mysql

  • 问题内容: 我想我需要更好地了解连接池的概念。我正在使用Java与ConnectorJ一起工作,并将servlet部署在Apache Tomcat服务器上。我一直在关注该文档,因此我的Tomcat context.xml如下所示: 我使用推荐的方式从数据源获得连接: 我的问题是:为什么我必须在context.xml中为我的数据源指定用户和密码。如果我错了,请纠正我,但我认为连接池的重点是重用拥有相