gpt4 book ai didi

java - 连接重置期间 DBConnectionPool 的行为方式

转载 作者:行者123 更新时间:2023-11-30 04:26:44 26 4
gpt4 key购买 nike

在我们的项目中,我们正在维护自己的数据库连接池。
为了解决问题'java.sql.SQLRecoverableException: Io异常大多数人建议使用标准连接池,如apache dbcp。

  • 我想知道这些标准池机制在连接重置期间将执行什么逻辑?
  • DBConnectionPool 如何知道数据库连接已超时?因为我们知道 conn.isClosed() 在这里没有帮助。
  • 是否每个数据库连接都会有一个与数据库服务器的 TCP 客户端套接字?
  • 最后是否可取;每当我将连接返回到池中时;池应该关闭连接;如果连接存在超过约 10 分钟则返回?[~10 分钟服务器端 conn 超时变量]

请回答我所有的问题。

最佳答案

我回答这个问题时假设您通过使用 org.apache.commons.pool.impl.GenericObjectPoolorg.apache.commons.dbcp 使用 Apache DBCP 进行连接池.DataSourceConnectionFactoryorg.apache.commons.dbcp.PoolableConnectionFactoryorg.apache.commons.dbcp.PoolingDataSource 类。

  • 我想知道那些标准池机制的逻辑是什么将在连接重置期间执行?如果 GenericObjectPool.testOnBorrowGenericObjectPool.testOnReturn 设置为 true,则将使用 validationQuery 验证连接是否处于 Activity 状态在PoolableConnectionFactory中设置。如果验证失败,则连接对象将被删除,并创建新的连接对象并将其添加到池中
  • DBConnectionPool 如何知道数据库连接已超时?自从我们知道 conn.isClosed() 在这里没有帮助。 与上述机制相同
  • 是否每个数据库连接都会有一个与数据库的 TCP 客户端套接字服务器?
  • 最后是否可取;每当我将连接返回到水池;池应该关闭连接;如果连接存在创建时间超过约 10 分钟? [~10 分钟服务器端连接超时变量] 如果您认为它不会产生不必要的网络流量,并且您有特殊原因这样做。你能行的。如果您想根据空闲时间删除,可以通过在 GenericObjectPool 中设置 minEvictableIdleTimeMillis 以及 timeBetweenEvictionRunsMillis 来进行删除

关于java - 连接重置期间 DBConnectionPool 的行为方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15689709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com