Bei einer Standardinstallation von Grails 2.5 und einem sauberen Standard, config, gibt das Hinzufügen einer zweiten Datenquelle immer diese Ausnahme beim Startversuch an die App. Dies war früher kein Problem mit Grails 2.3.xGrils 2.5: "Ein weiterer unbenannter CacheManager existiert bereits in derselben VM" bei Verwendung mehrerer Datenquellen
DataSource.groovy
arbeiten:
environments {
development {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://127.0.0.1:3306/myapp"
username = "myuser"
password = "mypass"
}
dataSource_report {
url = "jdbc:mysql://127.0.0.1:3306/myapp_reporting"
username = "someuser"
password = "somepass"
}
}
Beide Datenbanken existieren, und können angeschlossen werden, wenn nur eine Datenquelle definiert.
Im BuildConfig.groovy
, ist das ganze Zeug, das als Standard kam (ich nehme an), einschließlich:
plugins {
build ":tomcat:7.0.55"
compile ":scaffolding:2.1.2"
compile ':cache:1.1.8'
compile ":asset-pipeline:2.1.1"
compile ":spring-security-core:2.0-RC4"
compile ":quartz:1.0.2"
runtime ":hibernate4:4.3.8.1" // or ":hibernate:3.6.10.18"
runtime ":database-migration:1.4.0"
runtime ":cors:1.1.6"
}
Es gibt viele Beiträge mit diesem Fehler, aber sie scheinen zu sein, weil der Autor zu verwenden versucht Nicht-Standard-Versionen oder Caching.
auch versucht, diese zu Config.groovy, gemäß diesem Beitrag: https://github.com/grails/grails-core/releases/tag/v2.5.0
beans {
cacheManager {
shared = true
}
}
dies nicht, leider helfen.
Hinweis, verwenden wir den Standard aus der Box konfiguriert caching
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
singleSession = true // configure OSIV singleSession mode
flush.mode = 'manual' // OSIV session flush mode outside of transactional context
}
==== UPDATE ====
Ersetzen dieser Zeile (in DataSource.groovy
unter hibernate
Abschnitt):
cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory'
Mit dieser:
cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory'
Scheint das Problem behoben zu haben, aber die Frage ist nun, gibt es irgendwelche Nachteile dieser "Reparatur"?
sollte es sein - 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory' –