This article建议Tomcat 7应用程序应该使用JDBC连接池而不是commons-dbcp连接池。但是,后者是Grails应用程序的默认设置,并且如何更改它并不明显。
我的猜测是我需要在resources.groovy
中定义一个Spring bean来覆盖通常在默认情况下创建的bean,但是我不知道应该命名这个bean或者我需要设置什么属性
答案 0 :(得分:12)
最简单的方法可能是使用jdbc-pool插件。由于此池的配置选项与Commons DBCP(它们记录为here)非常相似,因此您可以使用该插件定义jar依赖关系并管理为您切换类。该插件在一年内没有更新,所以它有点过时了(插件使用版本1.0.9.0但是latest is 1.0.9.3)所以你可能想要定义不包括jar的插件依赖项,并添加一个for较新的版本。它位于ebr
回购中,因此您需要将其添加到BuildConfig.groovy中(请参阅plugin's version了解他是如何做到的)。
如果您确实想在不使用插件的情况下进行配置,请将ebr
repo和jar依赖项添加到BuildConfig.groovy
:
repositories {
inherits true
...
ebr()
}
dependencies {
runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') {
transitive = false
}
}
并在dataSource
中为resources.groovy
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
中设置了驱动程序和连接信息。
答案 1 :(得分:3)
在DataSource.groovy
我使用以下内容:
environments {
integration {
dataSource {
pooled = false
jndiName = "java:/comp/env/jdbc/myJndiName"
}
}
}
其他一切都是由Tomcat定义的 - 这只需要匹配它。无需在resources.groovy