DataSource health check failed

在项目中集成ShardingJDBC,启动报错:ConnectionCallback; isValid; nested exception is java.sql.SQLFeatureNotSupportedException: isValid

该项目是新做的,使用较新版本的Spring Boot 2.3,数据库连接词用Hikari。

用Sharding-JDBC蛮久了,之前一直是与DBCP2或Druid,没出过什么问题。这次集成Hikari,系统虽然报错但也能正常启动,仔细看源码,问题应该出在键康检查。

在网上找到一个遇到同样问题的人,经分析是Spring Boot 2.3数据源健康检查引起。解决办法是继承 DataSourceHealthContributorAutoConfiguration 重写 createIndicator 方法

@Configuration
public class DataSourceHealthConfig extends DataSourceHealthContributorAutoConfiguration {

    @Value("${spring.datasource.dbcp2.validation-query:select 1}")
    private String defaultQuery;


    public DataSourceHealthConfig(Map<String, DataSource> dataSources, ObjectProvider<DataSourcePoolMetadataProvider> metadataProviders) {
        super(dataSources, metadataProviders);
    }

    @Override
    protected AbstractHealthIndicator createIndicator(DataSource source) {
        DataSourceHealthIndicator indicator = (DataSourceHealthIndicator) super.createIndicator(source);
        if (!StringUtils.hasText(indicator.getQuery())) {
            indicator.setQuery(defaultQuery);
        }
        return indicator;
    }
}

参考:https://blog.csdn.net/qq_33547169/article/details/106565788


已发布

分类

, ,

来自

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注