Настройка Grails для использования собственной реализации DataSource или для прокси стандартного DataSource - PullRequest
5 голосов
/ 04 августа 2010

В приложении я хочу использовать собственную реализацию javax.sql.DataSource, которая расширяет стандарт org.apache.commons.dbcp.BasicDataSource, используемый Grails, и добавляет функциональность для установки идентификатора клиента на основе текущего пользователя, вошедшего в систему в приложении Grails.*

Каков наилучший способ изменить базовую реализацию javax.sql.DataSource в приложении Grails?

В настоящий момент я вижу две возможности:

  • изменить реализациюИсточник данных, который используется Grails
  • , является прокси-сервером источника данных, который используется Grails, и добавляет функциональность с помощью AOP

.

Ответы [ 2 ]

4 голосов
/ 06 августа 2010

вот мои resources.groovy

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH

// Place your Spring DSL code here
beans = {

    /**
     * c3P0 pooled data source that forces renewal of DB connections of certain age 
     * to prevent stale/closed DB connections and evicts excess idle connections
     * Still using the JDBC configuration settings from DataSource.groovy
     * to have easy environment specific setup available
     */
    dataSource(com.mchange.v2.c3p0.ComboPooledDataSource) { bean ->
        bean.destroyMethod = 'close'
        //use grails' datasource configuration for connection user, password, driver and JDBC url
        user = CH.config.dataSource.username 
        password = CH.config.dataSource.password
        driverClass = CH.config.dataSource.driverClassName
        jdbcUrl = CH.config.dataSource.url
        //force connections to renew after 2 hours
        maxConnectionAge = 2 * 60 * 60
        //get rid too many of idle connections after 30 minutes 
        maxIdleTimeExcessConnections = 30 * 60
    }

}

Я использую c3p0 ComboPooledDataSource

3 голосов
/ 04 августа 2010

Вы пытались настроить свой собственный источник данных в resources.groovy? Вот сообщение в блоге (не моё), в котором описан процесс

http://burtbeckwith.com/blog/?p=312

то, что вам нужно, в конце.

...