配置 Grails 以使用自己的 DataSource 实现或代理标准 DataSource
Posted
技术标签:
【中文标题】配置 Grails 以使用自己的 DataSource 实现或代理标准 DataSource【英文标题】:Configuring Grails to use own DataSource implementation or to proxy the standard DataSource 【发布时间】:2011-03-25 04:08:28 【问题描述】:在一个应用程序中,我想使用我自己的 javax.sql.DataSource
实现,它扩展了 Grails 使用的标准 org.apache.commons.dbcp.BasicDataSource
,并添加了基于 Grails 应用程序中当前登录用户设置客户端标识符的功能。
在 Grails 应用程序中更改底层 javax.sql.DataSource
实现的最佳方法是什么?
目前我看到了两种可能性:
更改 Grails 使用的 DataSource 的实现 代理 Grails 使用的 DataSource 并使用 AOP 添加功能关于如何处理此要求的任何提示?
【问题讨论】:
【参考方案1】:这是我的 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
【讨论】:
谢谢!这对我来说很有希望。 嗨。这对 Grails 2.3.6 仍然有效吗?谢谢!【参考方案2】:您是否尝试在 resources.groovy 中配置您自己的数据源?这是一篇介绍该过程的博文(不是我的)
http://burtbeckwith.com/blog/?p=312
你需要的东西在最后。
【讨论】:
以上是关于配置 Grails 以使用自己的 DataSource 实现或代理标准 DataSource的主要内容,如果未能解决你的问题,请参考以下文章
如何将 grails 配置为始终在状态 500 上显示自己的错误页面