[
https://issues.apache.org/jira/browse/DBCP-423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14280513#comment-14280513
]
Thomas Neidhart commented on DBCP-423:
--------------------------------------
I am fine with both approaches, but would like to see it applied consistantly
throughout the library. The code snippet was taken from PoolableConnection to
show how some parts of the code handle situations like this.
@properly dealt with: in the case of close() there is no exception handling,
anything that happens is just thrown further, sometimes wrapped, sometimes not,
so I don't think this argument applies here.
> PoolingDataSource should implement Closeable
> --------------------------------------------
>
> Key: DBCP-423
> URL: https://issues.apache.org/jira/browse/DBCP-423
> Project: Commons Dbcp
> Issue Type: Improvement
> Affects Versions: 2.0
> Reporter: Christian Schneider
> Fix For: 2.1
>
> Attachments: DBCP-423.patch
>
>
> 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:
> https://github.com/ops4j/org.ops4j.pax.jdbc/blob/master/pax-jdbc-pool/src/main/java/org/ops4j/pax/jdbc/pool/impl/PooledDataSourceFactory.java
> 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);
> }
> @Override
> public void close() throws IOException {
> getPool().close();
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)