【发布时间】:2017-01-17 23:23:02
【问题描述】:
我在将 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,但在我花费大量时间随机设置和/或覆盖默认设置之前,我想看看是否有可靠的方法来处理这个问题。
如何配置我的数据源以避免长时间后出现登录错误?
【问题讨论】:
标签: spring-mvc tomcat spring-security amazon-elastic-beanstalk amazon-rds