如何管理自定义数据库连接池

时间:2013-08-28 18:07:32

标签: java connection-pooling

我遇到了这个采访问题:你将如何管理数据库连接池? 我的想法是: 我将创建一个ArrayBlockingQueue<Connection>,创建来连接对象,并在ajvm启动时将它们放入队列中。然后将它包装在枚举单例的某种形式中,这样只有一个这样的队列,它在JVM的生命周期内保持活动状态。

然后使用某种实用程序/驱动程序类,它将从队列中获取连接并将它们返回队列。

我在想我还需要对此说些什么?我是否需要使队列线程安全,以便多个请求不具有相同的连接?

1 个答案:

答案 0 :(得分:0)

在我的意见中,你在这里遗漏了几点:

  1. 返回池时,连接应返回初始状态。例如,connection.setAutocommit(...);绝对应该还原

  2. 将本机连接包装到您自己的javax.sql.Connection接口实现中以控制和监视对连接执行的操作不是一个好主意。使用此模式,您还可以实现一个有价值的功能:将连接返回到close();调用

  3. 您需要一些manans来根据实际池利用率来控制池中的连接数。看看如何在Java集合中实现“容量”和“加载因子”以获得粗略的实现想法

  4. 如果它们还活着,应该监控连接。存档所有可能的数据库并不容易。