配置Grails应用程序以使用JDBC连接池

Dón*_*nal 9 grails groovy datasource jdbc tomcat7

本文建议Tomcat 7应用程序应使用JDBC连接池而不是commons-dbcp连接池.但是,后者是Grails应用程序的默认设置,并且如何更改它并不明显.

我的猜测是我需要定义一个Spring bean resources.groovy来覆盖通常默认创建的bean,但是我不知道应该命名这个bean或者我需要设置什么属性.

Bur*_*ith 12

最简单的方法可能是使用jdbc-pool插件.由于此池的配置选项与Commons DBCP(它们在此处记录)非常相似,因此您可以使用该插件定义jar依赖关系并管理为您切换类.该插件在一年内没有更新,所以它有点过时了(插件使用版本1.0.9.0但最新版本是1.0.9.3)所以你可能想要定义不包括jar的插件依赖项,并添加一个较新的版本.它在ebrrepo中,所以你需要将它添加到你的BuildConfig.groovy(请参阅插件的版本,了解他是如何做到的).

还有为池配置说明这里和作者的一系列博客文章在这里.

如果您确实想在不使用插件的情况下配置它,请将ebrrepo和jar依赖项添加到BuildConfig.groovy:

repositories {
   inherits true
   ...
   ebr()
}

dependencies {
   runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') {
      transitive = false
   }
}
Run Code Online (Sandbox Code Playgroud)

并在以下位置为dataSourcebean 创建覆盖resources.groovy:

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"
   }
}
Run Code Online (Sandbox Code Playgroud)

使用带有${}占位符的单引号字符串可以方便地利用Spring的属性占位符功能并保持DRY,因为您已经设置了驱动程序并连接了信息DataSource.groovy.