2010-08-04 5 views
5

In einer Anwendung möchte ich meine eigene Implementierung javax.sql.DataSource verwenden, die den von Grails verwendeten Standard org.apache.commons.dbcp.BasicDataSource erweitert und die Funktionalität zum Festlegen der Client-ID basierend auf dem aktuell protokollierten Wert hinzufügt in Benutzer bei der Grails-Anwendung.Konfigurieren von Grails zur Verwendung eigener DataSource-Implementierung oder zum Proxy der Standard-DataSource

Was ist der beste Weg, um die zugrunde liegende javax.sql.DataSource Implementierung in einer Grails-Anwendung zu ändern?

Im Moment sehe ich zwei Möglichkeiten:

  • Änderung der Implementierung der Datasource, die von Grails
  • Proxy die Datasource, die von Grails verwendet wird, verwendet wird und die Funktionalität mit AOP
hinzufügen

Hinweise zum Umgang mit dieser Anforderung?

Antwort

4

hier ist mein 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 
    } 

} 

ich verwende c3p0 ComboPooledDataSource

+0

Danke! Das sieht sehr vielversprechend aus. – stefanglase

+0

Hallo. Gilt das noch für Grails 2.3.6? Vielen Dank! –

3

Haben Sie versucht, Ihre eigene Datenquelle in resources.groovy zu konfigurieren? Hier ist ein Blog-Post (nicht von mir), die über den Prozess geht

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

das Material, das Sie brauchen am Ende ist.

+0

Danke zu diesem Artikel für den Hinweis mich! – stefanglase