2010-08-04 26 views
5

Dans une application, je souhaite utiliser ma propre implémentation de javax.sql.DataSource qui étend la norme org.apache.commons.dbcp.BasicDataSource utilisée par Grails et ajoute la fonctionnalité permettant de définir l'identificateur client en fonction de la connexion actuelle dans l'utilisateur à l'application Grails.Configuration de Grails pour utiliser sa propre implémentation DataSource ou pour proxy DataSource standard

Quelle est la meilleure façon de changer la mise en œuvre javax.sql.DataSource sous-jacente dans une application Grails?

Actuellement, je vois deux possibilités:

  • changement de la mise en œuvre du DataSource qui est utilisé par Grails
  • proxy DataSource qui est utilisé par Grails et ajouter la fonctionnalité avec AOP

Tous les conseils sur la façon de faire face à cette exigence?

Répondre

4

ici est mon 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 
    } 

} 

J'utilise c3p0 ComboPooledDataSource

+0

Merci! Cela me semble très prometteur. – stefanglase

+0

Salut. Est-ce encore valable pour Grails 2.3.6? Merci! –

3

avez-vous essayé de configurer votre propre source de données dans resources.groovy? Voici un billet de blog (pas de moi) qui va sur le processus

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

les choses dont vous avez besoin est à la fin.

+0

Merci de me pointant vers cet article! – stefanglase