小编Kyl*_*yle的帖子

Grails 2服务中的多个动态数据源

我正在使用Grails应用程序,我必须访问几个数据源.数据源在默认数据库中定义(即它们存储在那里,我必须调用默认数据库来检索我必须准备连接的数据源名称列表).当服务器启动时,我检索数据库列表,创建数据源bean并注入它们.所有动态添加的数据库在结构上都是相同的(即具有相同的表和域对象结构).

这个问题是我最接近一段有用的代码,但它并不是我需要的.

问题#1

  • 当我注册数据源bean时,它们会出现在我期望的位置,但是Grails并没有提取它们.

这是我添加它们的方式:

// Register datasource bean
def beanName = 'dataSource_devDB1'

BeanBuilder bb = new BeanBuilder()
bb.beans {
    "${beanName}"(BasicDataSource) { 
        url = "jdbc:h2:devDB1Db;MVCC=TRUE"
        pooled = true
        driverClassName = "org.h2.Driver"
        username = "sa"
        password = ""            
    }
}

bb.registerBeans(grailsApplication.mainContext)

// check that it registered
def ctx = grailsApplication.mainContext
def ctxlist = ctx2.beanDefinitionNames.findAll{it.contains( 'dataSource' )}

log.info "ctxlist = " + ctxlist
Run Code Online (Sandbox Code Playgroud)

这打印:

[dataSource, dataSourceUnproxied, dataSource_devDB1]
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我可以对默认数据源执行操作,就是这样.

问题#2

  • 如果我将所有数据源声明为Datasource.groovy文件的一部分,那么我可以在所有数据库上执行操作,但不能像文档中所宣传的那样

如果我在域对象上执行静态映射,它可以工作:

static mapping = {datasources(['devDB1', 'devDB2', 'DEFAULT')] or …
Run Code Online (Sandbox Code Playgroud)

grails datasource

12
推荐指数
1
解决办法
5068
查看次数

标签 统计

datasource ×1

grails ×1