这篇文章建议Tomcat 7应用程序应该使用JDBC连接池而不是commons-dbcp连接池。然而,后者是Grails应用程序的默认值,而且如何更改它并不明显。
我的猜测是我需要在resources.groovy
中定义一个Spring bean来覆盖默认情况下通常创建的bean,但我不知道这个bean应该命名为什么或者我需要设置哪些属性。
ebr
仓库中,因此您需要将其添加到BuildConfig.groovy中(请参见插件版本如何执行)。
这里有关于池配置的注释在这里,以及作者写的一系列博客文章在这里。
如果你不想使用插件进行配置,可以将ebr
仓库和jar依赖项添加到BuildConfig.groovy
中:
repositories {
inherits true
...
ebr()
}
dependencies {
runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') {
transitive = false
}
}
并且在 resources.groovy
中为 dataSource
bean 创建覆盖:
import org.apache.tomcat.jdbc.pool.DataSource
beans = {
dataSource(DataSource) {
// mandatory
driverClassName = '${dataSource.driverClassName}'
username = '${dataSource.username}'
password = '${dataSource.password}'
url = '${dataSource.url}'
// optional
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
使用带有${}
占位符的单引号字符串很方便,可以利用Spring的属性占位符功能并使代码DRY,因为您已经在DataSource.groovy
中设置了驱动程序和连接信息。
DataSource.groovy
中,我使用以下内容:environments {
integration {
dataSource {
pooled = false
jndiName = "java:/comp/env/jdbc/myJndiName"
}
}
}
所有其他内容都由Tomcat定义-它只需要匹配即可。在resources.groovy
中不需要定义任何dataSource bean。