Uploaded image for project: 'Commons DBCP'
  1. Commons DBCP
  2. DBCP-423

PoolingDataSource should implement Closeable



    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0
    • 2.1
    • None


      Currently PoolingDataSource only implements DataSource.

      I have the following case in ops4j pax-jdbc. I offer a DataSourceFactory in one bundle that can create a pooling DataSource.

      Then in another bundle I create DataSources based on config in ConfigurationAdmin. So when the config appears I create the DataSource, when the config goes away I have to destroy it.

      It is important to correctly dispose the DataSource as the pool has to be closed. As I can not depend on dbcp in the bundle that destroys the DataSource I currently have no simple way to destroy the DataSource.

      This is where I create the DataSource:

      I was able to solve it by a kind of hack. I extended the PoolingDataSource with a class that supports Closeable. So from the other bundle I could check if the object implements Closeable and call close.

      It would be a lot easier if PoolingDataSource would implement Closeable like I did. The same is true for GenericObjectPool and the other pools. If they would implement Closeable then handling them would be a lot easier.
      They already support a close method so it would be a small change.

      public class CloseablePoolingDataSource<C extends Connection> extends PoolingDataSource<C> implements Closeable {

      public CloseablePoolingDataSource(ObjectPool<C> pool)

      { super(pool); }

      public void close() throws IOException

      { getPool().close(); }



        1. DBCP-423.patch
          4 kB
          Thomas Neidhart



            Unassigned Unassigned
            cschneider Christian Schneider
            0 Vote for this issue
            2 Start watching this issue