当网络断开或者数据库服务器Crash时,连接池里面会存在“不可用连接”,连接池需要一种机制剔除这些“不可用连接”。在Druid和JBoss连接池中,剔除“不可用连接”的机制称为ExceptionSorter,实现的原理是根据异常类型/Code/Reason/Message来识别“不可用连接”。没有类似ExceptionSorter的连接池,在数据库重启或者网络中断之后,不能恢复工作,所以ExceptionSorter是连接池是否稳定的重要标志。

如何使用

在Druid中,会根据连接池连接数据库的类型自动匹配不同类型的ExceptionSorter,不需要额外配置。这一点Druid和jboss是不同的。

Druid内置哪些ExceptionSorter

dbTypeExceptionSorter Implementationdescription
DB2com.alibaba.druid.pool.vendor.DB2ExceptionSorter
Informixcom.alibaba.druid.pool.vendor.InformixExceptionSorter
SQL Servercom.alibaba.druid.pool.vendor.MSSQLValidConnectionChecker
MySQLcom.alibaba.druid.pool.vendor.MySqlExceptionSorter支持OceanBase和阿里云RDS特定的ErrorCode
Oraclecom.alibaba.druid.pool.vendor.OracleExceptionSorter
Postgresqlcom.alibaba.druid.pool.vendor.PGExceptionSorter
Sybasecom.alibaba.druid.pool.vendor.SybaseExceptionSorter