当前使用版本(必填,否则不予处理)
dynamic-datasource-spring-boot-starter-2.5.4.jar
该问题是如何引起的?(确定最新版也有问题再提!!!)
项目中使用了shardingjdbc分库分表,shardingjdbc的数据源类是org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource 继承了org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractDataSourceAdapter AbstractDataSourceAdapter中实现了close方法但是 mybatisplus中的销毁方法org.jeecg.config.shardingjdbc.gluemybatisplus.MyDynamicRoutingDataSource#destroy中使用getDeclaredMethod是获取不到父类中声明的close的所以会导致关闭数据源失败
重现步骤(如果有就写完整)
看完上面的原因相信聪明的开发者已经懂了 建议改成如下
try {
//关键代码 getDeclaredMethod 只能获取本类中声明的所有方法(public,protected,privite等)
Method closeMethod = clazz.getDeclaredMethod("close");
closeMethod.invoke(dataSource);
} catch (NoSuchMethodException e) {
// 加一个try
try {
//获取父类实现的close
Method closeMethod = clazz.getMethod("close");
closeMethod.invoke(dataSource);
} catch (NoSuchMethodException e) {
log.warn("关闭数据源 {} 失败,", item.getKey());
}
}
报错信息
2020-06-04 10:25:12.130 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-4} closing ...
2020-06-04 10:25:12.133 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-4} closed
2020-06-04 10:25:12.134 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-5} closing ...
2020-06-04 10:25:12.136 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-5} closed
2020-06-04 10:25:12.136 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-6} closing ...
2020-06-04 10:25:12.138 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-6} closed
2020-06-04 10:25:12.138 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-3} closing ...
2020-06-04 10:25:12.139 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-3} closed
2020-06-04 10:25:12.139 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-2} closing ...
2020-06-04 10:25:12.140 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-2} closed
2020-06-04 10:25:12.141 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-1} closing ...
2020-06-04 10:25:12.141 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-1} closed
2020-06-04 10:25:12.144 [SpringContextShutdownHook] WARN c.b.dynamic.datasource.DynamicRoutingDataSource:195 - 关闭数据源 sharding 失败,
Process finished with exit code 130
Comment From: huayanYu
欢迎提交PR。
Comment From: FlashMickeyMouse
一直没有时间,麻烦问下你们改了吗?