简体   繁体   中英

How do I properly destroy an Apache Commons DBCP Pool in Java?

I would like to use a PoolingDataSource as my connection pool (API at: http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolingDataSource.html ), but I don't know what to do with the pool when I no longer need it. What if I want to connect to a new database and don't need the connections in the old pool anymore? There is no close method on the pool.

You don't necessarily need to kill this pool to create a new one.

You can manage the connections in it using the maxIdle, timeBetweenEvictionRunsMillis and minEvictableIdleTimeMillis parameters (see here ) to ensure idle connections get closed in a reasonable time.

Or you can configure a GenericObjectPool with those parameters programatically and use when creating your PoolingDataSource. That has a close() method if you want to force it.

Sorry for not answering your question directly, but may I recommend not using DBCP? It has had a number of serious problems, which other libraries learned from and improved upon.

There are much better pools out there.

What kind of pool are you using? If you're using the AbandonedObjectPool , then that's a subclass of Commons Pool's GenericObjectPool , which has a close() method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM