Mysql
 sql >> база данни >  >> RDS >> Mysql

Уеб приложението spring-boot губи възможността да се свързва с 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

Мисля, че това е причината, поради която не можете да потвърдите връзките си в пула, преди да ги използвате.

Трябва да замените метода postProcessAfterInitialization, за да зададете свойства на пула на TomcatJdbcDataSourceFactory bean по следния начин:

@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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql множество заявки в едно изявление

  2. Сценарии за архивиране и възстановяване на MySQL в облак с помощта на Microsoft Azure

  3. MYSQL:Настройка на таблицата с подробности за потребителя - най-добра практика

  4. Задайте максимално време за изпълнение в MYSQL / PHP

  5. Най-добра практика за PHP/MySQL система за назначаване/резервиране