我遇到了将Spring Security与MySql数据库支持的Elastic Beanstalk应用集成的问题。如果我部署我的应用程序,我能够正确登录一段时间,但最终我将开始收到登录错误,没有抛出异常,所以我无法获得有关该问题的任何有用信息。我也下载了日志,看不到任何有价值的东西。我可以看到日志显示访问公共页面的位置,尝试访问私有部分,返回登录页面,然后是loginError页面;但是,没有任何问题。
即使我无法通过浏览器登录,如果我从IDE运行应用程序以及在MySQL Workbench中查看数据库,我也可以登录。这告诉我问题是由于服务器上的某些持久状态。
我之前使用Spring Security的另一个Beanstalk应用程序遇到了类似的问题,并且可以通过设置应用程序属性来解决它,如下所示:
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 :(得分:0)
这不是特定配置值的问题,而是这些配置所在的位置。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="Demosss" class="flex-container"></ul>
<button id="clickMe">Click Me</button>
(application.properties
; Intellij)的默认位置适合部署为具有嵌入式Tomcat服务器的jar,但不能与提供的服务器进行战争。找不到/使用该文件,因此对文件的更改不会影响AWS提供的文件。
有很多方法可以解决这个问题;我选择在/resources
中添加RDS配置bean:
SpringBootServletInitializer
答案 1 :(得分: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);