我碰到这个面试问题就来了:你将如何管理一个数据库连接池? 我的想法是: 我将创建一个ArrayBlockingQueue<Connection>,
来创建连接对象,并把它们放在队列时ajvm启动。然后用某种形式的enum单例包装它,这样只有一个这样的队列,并且它在JVM的生命周期中保持活动状态。如何管理一个自定义的数据库连接池
然后使用某种工具/驱动程序类,将采取从队列连接,并退回他们回到队列。
我想我需要说这个还有什么?我是否需要使队列线程安全,以便多个请求不具有相同的连接?
我碰到这个面试问题就来了:你将如何管理一个数据库连接池? 我的想法是: 我将创建一个ArrayBlockingQueue<Connection>,
来创建连接对象,并把它们放在队列时ajvm启动。然后用某种形式的enum单例包装它,这样只有一个这样的队列,并且它在JVM的生命周期中保持活动状态。如何管理一个自定义的数据库连接池
然后使用某种工具/驱动程序类,将采取从队列连接,并退回他们回到队列。
我想我需要说这个还有什么?我是否需要使队列线程安全,以便多个请求不具有相同的连接?
在我opninion你在这里失踪几点:
连接应该返回回池中时,返回到初始状态。例如,connection.setAutocommit(...);应该一定还原
我不是一个好主意,将原生连接包装到您自己的javax.sql.Connection接口实现中,以控制和监视在连接上执行的操作。使用这种模式,你也可以实现一个有价值的功能:在close()返回连接池。调用
你需要一些menans控制在根据实际池的利用率池的连接数。看看如何“能力”和“负载因子”在Java集合实现得到一个粗略的实现思路,如果他们还活着
连接进行监控。对所有可能的数据库进行归档并不容易。
你应该有一个线程来监视数据库连接(它们是否关闭并打开新的连接) – anfy2002us
你是指uility/driver class是什么意思? – LoveMeow