发布于 2014-09-10 21:55:05
更新: OK,所以您实际上需要告诉Grails 而不是来汇集数据源,因为HikariCP现在正在处理这个问题。
我看到了我的应用程序中的连接奇怪,如果我离开那个开关。因此,相反,请说:
pooled = false“好吧,是的,”约书亚摩尔说得对。
我尝试用更新的Grails方法来做这件事,这是我的resources.groovy文件的相关部分。据我所知,Datasource.groovy中的配置值是在目标运行时环境被识别后(development、test或production)在运行时被拖到resources.groovy中的。
def config = Holders.config
def dataSources = config.findAll {
it.key.toString().contains("dataSource_")
}
dataSources.each { key, value ->
def ds = value
"${key}"(HikariDataSource, { bean ->
def hp = new Properties()
hp.username = ds.username
hp.password = ds.password
hp.connectionTimeout = 6000
hp.maximumPoolSize = 60
hp.jdbcUrl = ds.url
hp.driverClassName = ds.driverClassName
HikariConfig hc = new HikariConfig(hp)
bean.constructorArgs = [hc]
})
}这是我的DataSource.groovy配置的相关部分:
// environment specific settings
environments {
development {
dataSource_myapp1 {
pooled = false
username = "CONFIGURE_ME_EXTERNALLY"
password = "CONFIGURE_ME_EXTERNALLY"
driverClassName = 'oracle.jdbc.OracleDriver'
dialect = 'org.hibernate.dialect.Oracle10gDialect'
url = 'jdbc:oracle:thin:@MYDBHOST1:1521/MYSERVICEID1'
}
dataSource_myApp2 {
pooled = false
username = "CONFIGURE_ME_EXTERNALLY"
password = "CONFIGURE_ME_EXTERNALLY"
driverClassName = 'oracle.jdbc.OracleDriver'
dialect = 'org.hibernate.dialect.Oracle10gDialect'
url = 'jdbc:oracle:thin:@MYDBHOST2:1521/MYSERVICEID2'
}
}
}在我的例子中,对于test和production环境来说,这几乎是一样的。谢谢!
https://stackoverflow.com/questions/25772324
复制相似问题