gpt4 book ai didi

java - 如何为安全连接池编写逻辑

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

我正在使用执行器编写一个连接池。我的问题是当数据库宕机时,池中的所有连接都变成无效连接。

一种方法是定期刷新连接池,或者检查连接的有效性。处理此类问题的最佳方法是什么?

最佳答案

首先,如果你不绝对,绝对,没有办法,必须自己写,这是重新发明完美轮子的真实典型案例。 interwebz 上有许多优秀的连接池实现。

我(以及许多其他人)使用 Apache DBCP:http://commons.apache.org/dbcp/

如果您有某种 super 特殊的数据库,您至少可以依赖现有的池化解决方案,例如 Commons Pool:http://commons.apache.org/pool/

你知道,使用 apache 的东西可以让你和酷 child 坐在一起 ;)

那么,如果您真的必须自己编写,我建议您这样做:

每当请求连接时,检查它的有效性。没有办法解决这个问题。如果它不再有效,要么立即删除池中的所有连接(假设所有连接都无效),要么获取下一个并删除您检查的那个。重复直到你找到一个有效的或者你必须扩大游泳池。增加池将需要检查有效性并在无法建立新连接时中止(显然)。否则你手上会有一些很好的无限循环。

检查池并清理池和/或根据需要扩大池的辅助线程似乎也不错。只是不要单独依赖它,因为它很可能会错过无效连接,并且您仍然会提供无法使用的池元素。

线程(或多个线程)可能仅用于加快速度(检查/增加池),但不适合自己完成这项工作。您将必须根据要求检查/增长,辅助线程仅有助于避免这种情况。

关于java - 如何为安全连接池编写逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447651/

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