diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 9eb65780e5..13e80876bd 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -1383,8 +1383,12 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat public JdbcDataSourceStat getDataSourceStat() { return dataSourceStat; } + + public Object clone() throws CloneNotSupportedException { + return cloneDruidDataSource(); + } - public DruidDataSource clone() { + public DruidDataSource cloneDruidDataSource() { DruidDataSource x = new DruidDataSource(); cloneTo(x); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/TestClone.java b/src/test/java/com/alibaba/druid/bvt/pool/TestClone.java index f174aceae1..64d4353260 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/TestClone.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/TestClone.java @@ -30,9 +30,17 @@ public class TestClone extends TestCase { Connection conn_1 = dataSource.getConnection(); Connection conn_2 = dataSource.getConnection(); - DruidDataSource clone = dataSource.clone(); + DruidDataSource clone = (DruidDataSource) dataSource.clone(); clone.init(); + Connection conn_3 = dataSource.getConnection(); + Connection conn_4 = dataSource.getConnection(); + Connection conn_5 = dataSource.getConnection(); + + conn_3.close(); + conn_4.close(); + conn_5.close(); + dataSource.close(); Assert.assertEquals(dataSource.getUrl(), clone.getUrl()); @@ -72,13 +80,13 @@ public class TestClone extends TestCase { // now is new dataSource; dataSource = clone; - Connection conn_3 = dataSource.getConnection(); - Connection conn_4 = dataSource.getConnection(); - Connection conn_5 = dataSource.getConnection(); + Connection conn_6 = dataSource.getConnection(); + Connection conn_7 = dataSource.getConnection(); + Connection conn_8 = dataSource.getConnection(); - conn_3.close(); - conn_4.close(); - conn_5.close(); + conn_6.close(); + conn_7.close(); + conn_8.close(); }