This article建议Tomcat 7应用程序应该使用JDBC连接池而不是commons-dbcp连接池。然而,后者是Grails应用程序的默认设置,并且不清楚如何更改它。配置Grails应用程序以使用JDBC连接池
我的猜测是我需要在resources.groovy
中定义一个覆盖默认情况下通常创建的bean的bean,但我不知道应该命名这个bean或者需要设置哪些属性。
This article建议Tomcat 7应用程序应该使用JDBC连接池而不是commons-dbcp连接池。然而,后者是Grails应用程序的默认设置,并且不清楚如何更改它。配置Grails应用程序以使用JDBC连接池
我的猜测是我需要在resources.groovy
中定义一个覆盖默认情况下通常创建的bean的bean,但我不知道应该命名这个bean或者需要设置哪些属性。
最简单的做法可能是使用jdbc-pool插件。由于该池的配置选项有意与Commons DBCP非常相似(它们的文档记录为here),因此您可以使用该插件来定义jar依赖项并管理为您切换类。该插件一年内未更新,因此它有点过时(插件使用版本1.0.9.0,但是使用latest is 1.0.9.3),因此您可能需要定义不包括jar的插件依赖项,并为新版本添加一个。它在回购协议中,所以您需要将其添加到您的BuildConfig.groovy中(请参阅plugin's version了解他是如何做到的)。
如果你要在不使用插件的配置这一点,回购和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
豆的覆盖:
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的属性占位符功能,并保持干燥,因为您已经请在DataSource.groovy
中设置驱动程序和连接信息。
在DataSource.groovy
我使用以下命令:
environments {
integration {
dataSource {
pooled = false
jndiName = "java:/comp/env/jdbc/myJndiName"
}
}
}
和其他一切由Tomcat的定义 - 这只是需要与之相匹配的。没有必要定义任何dataSource bean resources.groovy
在开发模式下运行应用程序时不起作用 – 2012-03-04 21:11:49
啊,你的问题没有提到开发模式。 – doelleri 2012-03-04 22:36:41
我希望我的开发环境尽可能与生产相似,以最大限度地减少潜在的惊喜 – 2012-03-05 10:41:42
我想我只是使用插件。我会做一个新版本,升级到最新版本的JDBC连接池库。 – 2012-03-05 10:42:54