From 736d0b3ce2f24ea050a7b59635dde8c557168332 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 13 Jul 2011 01:42:47 +0000 Subject: [PATCH] git-svn-id: http://code.alibabatech.com/svn/druid/trunk@392 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../druid/pool/DruidAbstractDataSource.java | 5 +++-- .../alibaba/druid/pool/DruidDataSource.java | 14 +++++++++++-- .../pool/vendor/NullExceptionSorter.java | 20 +++++++++++++++++++ .../alibaba/druid/pool/benckmark/Case3.java | 5 +++-- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/alibaba/druid/pool/vendor/NullExceptionSorter.java diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index d5c4013cb7..5e79f4dd68 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -38,6 +38,7 @@ import javax.sql.DataSource; import com.alibaba.druid.filter.Filter; import com.alibaba.druid.filter.FilterChainImpl; +import com.alibaba.druid.pool.vendor.NullExceptionSorter; import com.alibaba.druid.proxy.jdbc.DataSourceProxy; import com.alibaba.druid.util.DruidLoaderUtils; import com.alibaba.druid.util.JdbcUtils; @@ -662,13 +663,13 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource public void setExceptionSoter(String exceptionSorter) throws Exception { if (exceptionSorter == null) { - this.exceptionSoter = null; + this.exceptionSoter = NullExceptionSorter.getInstance(); return; } exceptionSorter = exceptionSorter.trim(); if (exceptionSorter.length() == 0) { - this.exceptionSoter = null; + this.exceptionSoter = NullExceptionSorter.getInstance(); return; } diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 3632286190..22974e39fc 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -44,8 +44,13 @@ import com.alibaba.druid.filter.Filter; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.logging.Log; import com.alibaba.druid.logging.LogFactory; +import com.alibaba.druid.pool.vendor.InformixExceptionSorter; import com.alibaba.druid.pool.vendor.MSSQLValidConnectionChecker; +import com.alibaba.druid.pool.vendor.MySqlExceptionSorter; +import com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker; +import com.alibaba.druid.pool.vendor.OracleExceptionSorter; import com.alibaba.druid.pool.vendor.OracleValidConnectionChecker; +import com.alibaba.druid.pool.vendor.SybaseExceptionSorter; import com.alibaba.druid.proxy.DruidDriver; import com.alibaba.druid.proxy.jdbc.DataSourceProxyConfig; import com.alibaba.druid.stat.JdbcDataSourceStat; @@ -168,12 +173,17 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat this.dbType = JdbcUtils.getDbType(jdbcUrl, driverClass.getClass().getName()); if ("mysql".equals(dbType)) { - // this.validConnectionChecker = new MySqlValidConnectionChecker(); - this.validConnectionChecker = null; + this.validConnectionChecker = new MySqlValidConnectionChecker(); + this.exceptionSoter = new MySqlExceptionSorter(); } else if ("oracle".equals(dbType)) { this.validConnectionChecker = new OracleValidConnectionChecker(); + this.exceptionSoter = new OracleExceptionSorter(); } else if ("sqlserver".equals(dbType)) { this.validConnectionChecker = new MSSQLValidConnectionChecker(); + } else if ("informix".equals(dbType)) { + this.exceptionSoter = new InformixExceptionSorter(); + } else if ("sybase".equals(dbType)) { + this.exceptionSoter = new SybaseExceptionSorter(); } for (Filter filter : filters) { diff --git a/src/main/java/com/alibaba/druid/pool/vendor/NullExceptionSorter.java b/src/main/java/com/alibaba/druid/pool/vendor/NullExceptionSorter.java new file mode 100644 index 0000000000..6c98622c50 --- /dev/null +++ b/src/main/java/com/alibaba/druid/pool/vendor/NullExceptionSorter.java @@ -0,0 +1,20 @@ +package com.alibaba.druid.pool.vendor; + +import java.sql.SQLException; + +import com.alibaba.druid.pool.ExceptionSorter; + +public class NullExceptionSorter implements ExceptionSorter { + + private final static NullExceptionSorter instance = new NullExceptionSorter(); + + public final static NullExceptionSorter getInstance() { + return instance; + } + + @Override + public boolean isExceptionFatal(SQLException e) { + return false; + } + +} diff --git a/src/test/java/com/alibaba/druid/pool/benckmark/Case3.java b/src/test/java/com/alibaba/druid/pool/benckmark/Case3.java index 75b4deea55..8d5ae9b759 100644 --- a/src/test/java/com/alibaba/druid/pool/benckmark/Case3.java +++ b/src/test/java/com/alibaba/druid/pool/benckmark/Case3.java @@ -42,7 +42,7 @@ public class Case3 extends TestCase { public void test_perf() throws Exception { for (int i = 0; i < 10; ++i) { - druid(); + // druid(); dbcp(); } } @@ -66,6 +66,7 @@ public class Case3 extends TestCase { for (int i = 0; i < TEST_COUNT; ++i) { p0(dataSource, "druid", threadCount); } + dataSource.close(); System.out.println(); } @@ -88,7 +89,7 @@ public class Case3 extends TestCase { for (int i = 0; i < TEST_COUNT; ++i) { p0(dataSource, "dbcp", threadCount); } - dataSource.close(); + //dataSource.close(); System.out.println(); }