【问题标题】:configure Grails app to use JDBC connection pool配置 Grails 应用程序以使用 JDBC 连接池
【发布时间】:2012-03-21 23:36:18
【问题描述】:

This article 建议 Tomcat 7 应用程序应该使用 JDBC 连接池而不是 commons-dbcp 连接池。然而,后者是 Grails 应用程序的默认设置,如何更改它并不明显。

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

【问题讨论】:

    标签: grails jdbc groovy datasource tomcat7


    【解决方案1】:

    DataSource.groovy 我使用以下内容:

    environments {
        integration {
            dataSource {
                pooled = false
                jndiName = "java:/comp/env/jdbc/myJndiName"
            }
        }
     }
    

    其他的一切都是由 Tomcat 定义的——这只需要匹配它。无需在resources.groovy中定义任何dataSource bean

    【讨论】:

    • 啊,你的问题没有提到开发模式。
    • 我希望我的开发环境尽可能与生产环境相似,以尽量减少意外发生的可能性
    【解决方案2】:

    最简单的方法可能是使用jdbc-pool 插件。由于此池的配置选项有意与 Commons DBCP 非常相似(它们已记录在 here),因此您可以使用该插件来定义 jar 依赖项并为您管理切换类。该插件已经一年没有更新了,所以它有点过时了(插件使用版本 1.0.9.0 但latest is 1.0.9.3)所以您可能想要定义不包括 jar 的插件依赖项,并为较新的插件添加一个版本。它位于 ebr 存储库中,因此您需要将其添加到您的 BuildConfig.groovy(请参阅 plugin's version 了解他是如何做到的)。

    有池here的配置说明和作者here的一系列博文。

    如果您确实想在不使用插件的情况下进行配置,请将 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"
       }
    }
    

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

    【讨论】:

    • 我想我会使用插件。我将发布它的新版本,升级到最新版本的 JDBC 连接池库。
    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2012-10-19
    • 1970-01-01
    • 2015-08-12
    • 2015-02-20
    • 2011-03-06
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多