diff --git a/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java b/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java index fb4565613c..8e45164410 100644 --- a/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java +++ b/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java @@ -16,8 +16,12 @@ package com.alibaba.druid.pool; import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; import java.util.Properties; +import com.alibaba.druid.util.JdbcUtils; + /** * @author wenshao [szujobs@hotmail.com] * @since 0.2.21 @@ -25,8 +29,24 @@ import java.util.Properties; public class ValidConnectionCheckerAdapter implements ValidConnectionChecker { @Override - public boolean isValidConnection(Connection c, String query, int validationQueryTimeout) throws Exception { - return true; + public boolean isValidConnection(Connection conn, String query, int validationQueryTimeout) throws Exception { + if (query == null || query.length() == 0) { + return true; + } + + Statement stmt = null; + ResultSet rs = null; + try { + stmt = conn.createStatement(); + if (validationQueryTimeout > 0) { + stmt.setQueryTimeout(validationQueryTimeout); + } + rs = stmt.executeQuery(query); + return true; + } finally { + JdbcUtils.close(rs); + JdbcUtils.close(stmt); + } } @Override diff --git a/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java b/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java index 4ca44ca564..24c5729d69 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java @@ -325,16 +325,8 @@ public class DataSourceTest3 extends TestCase { dataSource.setValidationQuery(null); dataSource.setValidConnectionChecker(new MySqlValidConnectionChecker()); - { - Exception error = null; - try { - DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); - dataSource.validateConnection(conn); - } catch (SQLException ex) { - error = ex; - } - Assert.assertNotNull(error); - } - + DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); + dataSource.validateConnection(conn); + } }