环境 - 的Grails 2.0.4,甲骨文11GGrails的2.0数据库连接超时,SockectException
几个不活动的小时之后,从数据库中读取导致产生java.net.SocketException :连接超时。根据其他人提出的解决此问题的建议,我使用属性更新数据源以保持数据库连接处于活动状态。这里有我看着几个解决方案 -
它出现的解决方案包括对数据源的设置适当的值。在我的情况下,涉及2个数据源。我试图做一个会话保持活跃,以避免连接超时。这似乎是通过设置validationQuery属性和testXXX属性来完成的。当需要测试时,运行验证查询。我认为下面的配置会给我想要的结果,但我仍然看到超时。我打开了调试
debug 'org.hibernate'
debug 'jdbc.sqlonly'
我会期望看到validationQuery运行在一定的时间间隔。基于指定的“6000”ms值,我预计每6秒会看到一次validationQuery。这是数据源规范。我尝试了这两种方式。在“属性”关闭中指定它们并在与“合并”相同的级别指定它们。
dataSource_secondary {
logSql = true
pooled = true
properties {
maxActive = 5
maxIdle = 5
minIdle = 3
initialSize = 5
minEvictableIdleTimeMillis = 6000
timeBetweenEvictionRunsMillis = 6000
maxWait = 1000
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
validationQuery = "select 1 from dual"
}
}
我也在调试运行这个并添加一些代码来BootStrap.groovy中得到的上下文。在dataSource_secondary指定
def ctx = servletContext.getAttribute(ApplicationAttributes.APPLICATION_CONTEXT)
println 'Added a println allowing me to set a break point and inspect the context.'
“CTX” 确实有预期值。任何想法,为什么我仍然得到套接字异常?