grails - 在 Grails 2.3.6 中定义备用连接池

标签 grails connection-pooling bonecp hikaricp

我知道,在 Grails 1.X 和 Grails 2.X 之间的某个时间点,默认连接池库从 commons-dbcp 改变了。至 tomcat-dbcp .

现在,我正在尝试将 BoneCP 或 HikariCP 配置为我的 Grails 应用程序的连接池库。

但是,我看到 this answer提供了一个可能仅适用于 Grails 1.X 的解决方案。

我还找到了 this Gist ,但同样,我不知道它适用于哪个 Grails 版本。

那么,是否可以在 Grails 2.3.6 应用程序中定义自定义连接池?谢谢!

最佳答案

更新:好的,所以您实际上需要告诉 Grails 不是 池数据源,因为 HikariCP 现在正在处理这个。

如果我打开那个开关,我会在我的应用程序中看到连接异常。所以改为说:

pooled = false

好吧,@Joshua Moore 是对的。

我尝试使用更新的 Grails 方法来做这件事,这是我的 resources.groovy 的相关部分。文件。据我了解,Datasource.groovy中的配置值被拉入 resources.groovy在运行时,在确定目标运行时环境之后( developmenttestproduction )。
def config = Holders.config
def dataSources = config.findAll {
  it.key.toString().contains("dataSource_")
}

dataSources.each { key, value ->
  def ds = value
  "${key}"(HikariDataSource, { bean ->

     def hp = new Properties()
     hp.username = ds.username
     hp.password = ds.password
     hp.connectionTimeout = 6000
     hp.maximumPoolSize = 60
     hp.jdbcUrl = ds.url
     hp.driverClassName = ds.driverClassName

     HikariConfig hc = new HikariConfig(hp)
     bean.constructorArgs = [hc]
  })
}

这是我的 DataSource.groovy 的相关部分配置:
// environment specific settings
environments {
   development {
      dataSource_myapp1 {
         pooled = false
         username = "CONFIGURE_ME_EXTERNALLY"
         password = "CONFIGURE_ME_EXTERNALLY"
         driverClassName = 'oracle.jdbc.OracleDriver'
         dialect = 'org.hibernate.dialect.Oracle10gDialect'
         url = 'jdbc:oracle:thin:@MYDBHOST1:1521/MYSERVICEID1'
      }
      dataSource_myApp2 {
         pooled = false
         username = "CONFIGURE_ME_EXTERNALLY"
         password = "CONFIGURE_ME_EXTERNALLY"
         driverClassName = 'oracle.jdbc.OracleDriver'
         dialect = 'org.hibernate.dialect.Oracle10gDialect'
         url = 'jdbc:oracle:thin:@MYDBHOST2:1521/MYSERVICEID2'
      }
   }
}

就我而言,test 的情况几乎相同。和 production环境。谢谢!

关于grails - 在 Grails 2.3.6 中定义备用连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25772324/

相关文章:

java - 如果渲染保存json成功,如何刷新页面true

grails - GORM关系映射

grails - 通过 grails spring security facebook 插件登录后重定向?

java - 在最大等待时间后,c3p0 非 Activity 连接不会从连接池中剔除

java - 大小有限的分布式池

java - 为什么 BoneCP 不建立连接?

java - 将准备好的语句与 BoneCP 结合使用

grails - Grails本地化,数字输入

jdbc - 当连接返回到池时,BoneCP(或任何其他池)是否关闭连接的语句?

sql - ADO.NET 池连接无法重用