sql >> データベース >  >> RDS >> Mysql

スプリングブートWebアプリは、しばらくするとMySQL/RDSに接続できなくなります

    自動構成を使用して、次のようにプロパティファイルからRDS接続を定義している場合:

    cloud.aws.rds.testdb.password=testdbpwd
    cloud.aws.rds.testdb.username=testdbuser
    cloud.aws.rds.testdb.databaseName=testdb
    

    これら(またはtomcat datasource conf)を構成ファイルに入れても、スプリングブートデータソースの自動構成は機能しません:

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.test-on-borrow: true
    spring.datasource.validation-query: SELECT 1 FROM DUAL
    spring.datasource.log-validation-errors: true
    

    これが、プール内の接続を使用する前に検証できない理由だと思います。

    次のようにTomcatJdbcDataSourceFactoryBeanのプールプロパティを設定するには、postProcessAfterInitializationメソッドをオーバーライドする必要があります。

    @Component
    public class PoolConfiguration implements BeanPostProcessor {
    
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof TomcatJdbcDataSourceFactory) {
            TomcatJdbcDataSourceFactory tomcatJdbcDataSourceFactory = (TomcatJdbcDataSourceFactory) bean;
            tomcatJdbcDataSourceFactory.setTestOnBorrow(true);
            tomcatJdbcDataSourceFactory.setTestWhileIdle(true);
            tomcatJdbcDataSourceFactory.setValidationQuery("SELECT 1");
        }
        return bean;
    }
    }
    

    これに対する他の解決策は見つかりませんでした。ちなみに、これは spring-cloud-aws-autoconfigureのバグである可能性があります。 パケット。

    幸運を祈ります!



    1. OSXをYosemiteまたはElCapitanにアップグレードすると、MySQLが起動しません

    2. Group_concatMySQL関数と同等のOracle

    3. SQLServerのGOコマンドについて

    4. 既存の権限を持つユーザーをすばやく削除する方法