Я все еще тестирую мультитенантный плагин (ядро) в режиме SingleTenant, но он уже запущен, но не тестируется полностью.
Вот шаги:
1- установить плагин безопасности пружины , запустить grails s2-quickstart для установки ролей
2- Установить плагин multi-tenant-ehcache и измените свой cache.provider_class в Datasource.groovy на:
cache.provider_class = 'grails.plugin.multitenant.ehcache.cache.MultiTenantEhCacheProvider '
3- Установите мультитенантный (основной) плагин и настройте источник данныхresolver плюс dns resolver я сделал это статическим способом.Кроме того, в документации по плагину сказано, что мы можем настроить dataSoruceTenantMap следующим образом:
dataSourceTenantMap {
}
не работаетдля меня, поэтому я использовал опцию jndi через grails.naming.entries в конфигурации:
/ ** Config.groovy ** /
grails.naming.entries = [
"jdbc / lh_dev1": [
тип: "javax.sql.DataSource",
auth: "контейнер",
описание:" Мой источник данных ",
driverClassName:" com.mysql.jdbc.Driver ",
url:" jdbc: mysql: // localhost: 3306 / lh_dev1 ",
имя пользователя: "xxx",
пароль: "xxx",
maxActive: "100",
maxIdle: "30",
maxWait: "10000"
],
"jdbc / lh_dev2 ": [
тип:" javax.sql.DataSource ",
auth:" Контейнер ",
описание:" Мой источник данных ",
driverClassИмя: "com.mysql.jdbc.Driver",
url: "jdbc: mysql: // localhost: 3306 / lh_dev2",
имя пользователя: "xxx",
пароль: "xxx",
maxActive: "100",
maxIdle: "30",
maxWait: "10000"
]
]
// Настройка модуля MultiTenant
tenant {
mode = "singleTenant" // "singleTenant" OR "multiTenant"
datasourceResolver.type = "config" //This is the default and can be omitted
dataSourceTenantMap {
**t1 = "java:comp/env/jdbc/lh_dev1"****
**t2 = "java:comp/env/jdbc/lh_dev2"**
}
resolver.request.dns.type = "config" //This is the default
domainTenantMap {
lh_dev1 = 1
lh_dev2 = 2
}
}
В этот момент у вас будет 2 домена, связанных с 2 различными базами данных, как только вы нажмете, например:
каждый арендатор (клиент) имеет свою собственную базу данных.
4- Install multi-tenant-spring-подключаемый модуль безопасности и выполните следующие действия (обратите внимание, что я еще не внедрил подключаемый модуль безопасности, как только я это сделаю, я опубликую результаты):
В Config.groovy , ваш клиентсвойство resolver должно выглядеть следующим образом:
tenant{
resolver.type = "springSecurity"
}
You wТакже мне нужно добавить следующее поле в свой пользовательский домен Spring-Security. Класс
Целочисленный userTenantId
Окончательные проблемы ->
Каждый раз, когда мы запускаем grails, он будет только создавать / обновлять базу данных по умолчанию, все остальные будут оставаться чистыми, так как я все еще не знаю, как решить эту проблему, поэтому я просто экспортировал структуру базы данных по умолчанию для всех моих других арендаторов.база данных.
Наконец, я не сделал @MultiTenant Annoation для доменов, потому что я работаю с другой базой данных, не видел смысла вводить tenantid, так как каждый БД имеет свои личные записи.