Плагин состояния данных Grails - PullRequest
1 голос
/ 06 июня 2011

Я пытаюсь запустить плагин с несколькими источниками данных для приложения, над которым я работаю. Мне кажется (мне), что одно из обновлений до Grails нарушило функциональность плагина. Я работаю с обновленной версией 1.3.7 и пытаюсь использовать пример приложения, которое опубликовано. Я пробовал все под солнцем, чтобы заставить функционировать пример приложения работать, но ничего не получается.

Чтобы провести дальнейшее тестирование, я снизил версию enils Grails до версии 1.0.3, версии, в которой было написано демонстрационное приложение. При запуске с этой версией все работает нормально; Я могу подключиться ко всем трем источникам данных в обязательном порядке.

Мой вопрос: кто-нибудь может успешно использовать плагин под Grails 1.3.7, и кто-нибудь знает, если это все еще активный проект? Или это другой способ подключения к нескольким источникам данных?

Заранее спасибо,

Дональд

1 Ответ

3 голосов
/ 07 июня 2011

Похоже, что плагин Источники данных получает новое внимание.

С На этой неделе в Grails (2011-22) - "Разработка Grails 1.4 идет хорошо ... Я добавил поддержку нескольких источников данных в ядро ​​(из плагина Datasources) и работаю над добавлением двухфазной фиксации (XA / JTA) для JDBC и JMS. "


Я успешно интегрировал плагин Datasources в новый проект Grails 1.3.7. Я решил объединить конфигурацию с основным источником данных, чтобы упростить поддержку. Вот шаги, которые я выполнил:

Ссылка на плагин с использованием разрешения зависимостей плагина в conf / BuildConfig.groovy

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"
            }
        }
    }
}

Вы также можете использовать внешнюю конфигурацию для настройки вашего основного и дополнительного источников данных.

...