如何在Java中正确销毁Apache Commons DBCP池?

时间:2011-09-16 19:00:58

标签: java memory-management connection-pooling apache-commons apache-commons-dbcp

我想使用PoolingDataSource作为我的连接池(API位于:http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolingDataSource.html),但是当我不再需要它时,我不知道如何处理该池。如果我想连接到新数据库并且不再需要旧池中的连接,该怎么办?游泳池没有密切的方法。

3 个答案:

答案 0 :(得分:3)

您不一定需要杀死此池才能创建新池。

您可以使用maxIdle,timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis参数(请参阅here)管理其中的连接,以确保在合理的时间内关闭空闲连接。

或者您可以以编程方式配置GenericObjectPool这些参数,并在创建PoolingDataSource时使用。如果你想强制它,那就有一个close()方法。

答案 1 :(得分:2)

很抱歉没有直接回答您的问题,但我可以建议使用DBCP吗?它有许多严重的问题,其他图书馆从中学习和改进。

那里有much better pools

答案 2 :(得分:1)

您使用的是哪种游泳池?如果你正在使用AbandonedObjectPool,那么它是Commons Pool的GenericObjectPool的子类,它有close()方法。