对大多数程序员来说并没有太多理由这样做,但是你的确可以通过这种方法来一步步地创建一个PooledDataSource:实例化并且配置一个非池化的 DriverManagerDataSource,实例化一个WrapperConnectionPoolDataSource,并且将那个非池化的数据源设置为它的nestedDataSource属性,然后将它设定为一个PoolBackedDataSource对象的connectionPoolDataSource属性。
如果你的驱动提供了ConnectionPoolDataSource的实现,上面的这一系列步骤是你主要要关心的。
除了使用c3p0的WrapperConeectionPoolDataSource之外,你还可以创建一个PollBackedDataSource,然后设定它的connectionPoolDataSource属性。
第三方的ConnectionPoolDataSource不支持Statement池,ConnectionCustomizers,和一些特定的c3p0属性(第三方的DataSource实现可以用来替代c3p0的DriverManagerDataSource,这在功能上并没有什么明显的损失)。
REF:
http://cwiki.ossez.com/pages/viewpage.action?pageId=4719797