0

Я столкнулся с проблемой интеграции Spring Security с моим Elastic Beanstalk при поддержке базы данных MySql. Если я разверну свое приложение, я смогу войти в систему правильно в течение некоторого времени, но в итоге я начну принимать ошибки входа без исключения, поэтому я не могу получить полезную информацию об этой проблеме. Я также загрузил журналы и не вижу ничего ценного. Я вижу, где журналы показывают доступ к открытой странице, пытается получить доступ к частному разделу, возвращая страницу входа в систему, а затем страницу loginError; однако ничего о какой-либо проблеме.Как правильно настроить Spring Datasource для приложения Elastic Beanstalk?

Несмотря на то, что я не могу войти через браузер, я могу войти в систему, если я запустил приложение из среды IDE, а также просмотрел db в MySQL Workbench. Это говорит о том, что проблема связана с некоторым постоянным состоянием на сервере.

У меня была аналогичная проблема раньше с другим приложением Beanstalk с помощью Spring Security и смог решить ее путем установки свойств приложения следующим образом:

spring.datasource.test-on-borrow=true 
spring.datasource.validation-query=SELECT 1 

Я использую более позднюю версию Spring чем что приложение и свойства были изменены для конкретных источников данных, так что я попытался добавить следующие свойства:

spring.datasource.tomcat.test-on-borrow=true 
spring.datasource.tomcat.validation-query=SELECT 1 

Когда это не сработало, я добавил еще один на основе ответа на подобный вопрос здесь; теперь свойства:

spring.datasource.tomcat.test-on-borrow=true 
spring.datasource.tomcat.test-while-idle=true 
spring.datasource.tomcat.validation-query=SELECT 1 

Это, казалось, работал (возможно, из-за меньший вход активность), но в конечном счете, привел к такому же поведению.

Я просмотрел различные properties available, но прежде чем тратить много времени на случайную настройку и/или переопределять настройки по умолчанию, я хотел посмотреть, есть ли надежный способ справиться с этим.

Как настроить свой источник данных, чтобы избежать ошибок входа в систему после длительных периодов времени?

ответ

0

Это не проблема конкретных значений конфигурации, а с тем, где находятся эти конфигурации. Расположение по умолчанию для application.properties (/resources; Intellij) прекрасно подходит для развертывания в качестве банки со встроенным сервером Tomcat, но не для войны с предоставленным сервером. Файл не найден/использован, поэтому никакие изменения в файле не влияют на файл, предоставленный AWS.

Есть несколько способов справиться с этим; Я решил добавить конфигурационный компонент RDS в моем SpringBootServletInitializer:

@Bean 
public RdsInstanceConfigurer instanceConfigurer() { 
    return() -> { 
     TomcatJdbcDataSourceFactory dataSourceFactory = 
       new TomcatJdbcDataSourceFactory(); 
     // Abondoned connections... 
     dataSourceFactory.setRemoveAbandonedTimeout(60); 
     dataSourceFactory.setRemoveAbandoned(true); 
     dataSourceFactory.setLogAbandoned(true); 
     // Tests 
     dataSourceFactory.setTestOnBorrow(true); 
     dataSourceFactory.setTestOnReturn(false); 
     dataSourceFactory.setTestWhileIdle(false); 
     // Validations 
     dataSourceFactory.setValidationInterval(30000); 
     dataSourceFactory.setTimeBetweenEvictionRunsMillis(30000); 
     dataSourceFactory.setValidationQuery("SELECT 1"); 
     return dataSourceFactory; 
    }; 
} 
0

Ниже приведены параметры, которые работали на меня. От Connection to Db dies after >4<24 in spring-boot jpa hibernate

dataSourceFactory.setMaxActive(10); 
dataSourceFactory.setInitialSize(10); 
dataSourceFactory.setMaxIdle(10); 
dataSourceFactory.setMinIdle(1); 
dataSourceFactory.setTestWhileIdle(true); 
dataSourceFactory.setTestOnBorrow(true); 
dataSourceFactory.setValidationQuery("SELECT 1 FROM DUAL"); 
dataSourceFactory.setValidationInterval(10000); 
dataSourceFactory.setTimeBetweenEvictionRunsMillis(20000); 
dataSourceFactory.setMinEvictableIdleTimeMillis(60000); 
Смежные вопросы