我正在尝试为正在处理的应用程序运行多个数据源插件。在我看来,升级到grails之一已破坏了插件的功能。我正在使用最新的安装1.3.7,并尝试使用发布的示例应用程序。我已经尝试在阳光下进行所有操作,以使示例应用程序中的功能正常工作,但没有任何效果。

为了进行进一步的测试,我将grails env降级为编写演示应用程序的版本1.0.3。我可以毫无问题地连接到所有三个数据源。

我的问题是:在那里有人可以在Grails 1.3.7下成功使用该插件吗?有人知道这是否仍然是一个 Activity 项目吗?或者,是连接到多个数据源的另一种方法吗?

提前致谢,

唐纳德

最佳答案

看来Datasources plugin受到了新的关注。

来自This Week in Grails (2011-22)-“Grails 1.4开发进展顺利。...我已经向核心添加了对多个数据源的支持(来自Datasources插件),并且正在为JDBC和JMS添加两阶段提交(XA / JTA)。”

我已成功将Datasources plugin集成到新的Grails 1.3.7项目中。我选择将配置与主要数据源结合起来以使其更易于维护。这是我遵循的步骤:

在conf / BuildConfig.groovy中使用plugin dependency resolution引用插件

grails.project.dependency.resolution = {
    plugins {
        runtime ':datasources:0.5'
    }
}

在conf / Datasources.groovy中创建其他数据源
import org.codehaus.groovy.grails.commons.ConfigurationHolder

datasources = {
    datasource(name: 'DS2') {
        domainClasses([domain.Object])
        if (ConfigurationHolder.config.DS2.dataSource.readOnly) readOnly(ConfigurationHolder.config.DS2.dataSource.readOnly)
        driverClassName(ConfigurationHolder.config.DS2.dataSource.driverClassName)
        url(ConfigurationHolder.config.DS2.dataSource.url)
        if (ConfigurationHolder.config.DS2.dataSource.username) username(ConfigurationHolder.config.DS2.dataSource.username)
        if (ConfigurationHolder.config.DS2.dataSource.password) password(ConfigurationHolder.config.DS2.dataSource.password)
        if (ConfigurationHolder.config.DS2.dataSource.dbCreate) dbCreate(ConfigurationHolder.config.DS2.dataSource.dbCreate)
        dialect(ConfigurationHolder.config.DS2.dataSource.dialect)
        if (ConfigurationHolder.config.DS2.dataSource.jndiName) jndiName(ConfigurationHolder.config.DS2.dataSource.jndiName)
        if (ConfigurationHolder.config.DS2.dataSource.pooled) pooled(ConfigurationHolder.config.DS2.dataSource.pooled)
        if (ConfigurationHolder.config.DS2.dataSource.loggingSql) loggingSql(ConfigurationHolder.config.DS2.dataSource.loggingSql)
        if (ConfigurationHolder.config.DS2.dataSource.logSql) logSql(ConfigurationHolder.config.DS2.dataSource.logSql)

        hibernate {
            cache {
                if (ConfigurationHolder.config.DS2.hibernate.cache.use_second_level_cache) use_second_level_cache(ConfigurationHolder.config.DS2.hibernate.cache.use_second_level_cache)
                if (ConfigurationHolder.config.DS2.hibernate.cache.use_query_cache) use_query_cache(ConfigurationHolder.config.DS2.hibernate.cache.use_query_cache)
                if (ConfigurationHolder.config.DS2.hibernate.cache.provider_class) provider_class(ConfigurationHolder.config.DS2.hibernate.cache.provider_class)
            }
        }
    }
}

在conf / Datasource.groovy中配置默认​​的数据源和特定于环境的设置
DS2 {
    dataSource {
        pooled=true
        readOnly=false
        driverClassName="org.hsqldb.jdbcDriver"
        username=""
        password=""
        dialect="org.hibernate.dialect.HSQLDialect"
    }
    hibernate {
        cache.use_second_level_cache=true
        cache.use_query_cache=true
        cache.provider_class="net.sf.ehcache.hibernate.EhCacheProvider"
    }
}

environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop','update'
            url = "jdbc:hsqldb:mem:devDB"
        }
        DS2 {
            dataSource {
                dbCreate="create-drop"
                url="jdbc:hsqldb:mem:devDB2"
            }
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:mem:testDb"
        }
        DS2 {
            dataSource {
                dbCreate="update"
                url="jdbc:hsqldb:mem:testDb2"
            }
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:file:prodDb;shutdown=true"
        }
        DS2 {
            dataSource {
                dbCreate="update"
                url = "jdbc:hsqldb:file:prodDb2;shutdown=true"
            }
        }
    }
}

您还可以使用externalized configuration来配置您的主要和其他数据源。

关于plugins - Grails数据源状态插件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6256641/

10-13 06:40