如何关闭java.sql.DataSource

时间:2011-07-05 08:29:57

标签: java datasource c3p0

我们有一个按日期划分数据的系统。因此,例如在SqlServer中,我们每月有一个数据库。每个月分区使用包含在C3P0连接池DataSource中的Jdbc驱动程序数据源。

经过一段时间后,分区的日期范围变得足够大,我们想让它脱机。在这种情况下,我们只从可用列表中删除相关月份的DataSource。但是,理想情况下,当离线时,我想“关闭”数据源,以便池放弃所有与数据库的连接。

DataSource没有密切的方法让我打电话所以我不知道如何清理它。

有什么建议吗?

3 个答案:

答案 0 :(得分:9)

您没有关闭DataSource - 您DataSource关闭返回的连接。 DataSource本身永远不会“开放”。

我希望游泳池在超时后放弃打开连接,所以我建议你不要担心它:)如果你需要强行关闭连接,你需要保留一个参考连接池本身并直接使用c3p0提供的任何工具。

答案 1 :(得分:7)

如果您使用C3PO 池化 DataSources,那么您可以使用DataSources.destroy(DataSource)释放与DataSource关联的线程和连接。

答案 2 :(得分:1)

在我的情况下,@ sudocode的答案不起作用,所以我获得了合并的数据源,我关闭了它:

ComboPooledDataSource datasource =
                (ComboPooledDataSource) envContext.lookup("jdbc/oracledb");
datasource.close();