2013-03-27 13 views
5

Ich benutze meine Grails-Anwendung mit ehcache für meinen 2nd level Cache und es funktioniert. Ich habe das ehcache Plugin + cache Plugin installiert und dann nicht. Ich habe fast alle Lösungen aus dem Internet ausprobiert und keine Lösung gefunden, die ich immer Another unnamed CacheManager already exists in the same VM bekomme.Grails ehcache plugin - Ein weiterer ungenannter CacheManager existiert bereits in derselben VM

Eine der möglichen Lösungen ist p:shared=true im EhCacheManagerFactoryBean zu setzen, das funktioniert, wenn ich eine alte Plugin „springcache Plugin von Grails“ verwenden, aber mit dem neuen Plugin verwenden sie eine modifizierte Version dieses Managers und die gemeinsame Eigenschaft ist nicht verfügbar.

Ich habe versucht, eine neue ehcache.xml Datei zu definieren, aber ich kann immer noch nicht einen neuen Namen für diesen Cache-Manager eingeben.

Ich versuchte, die cache.provider Klasse in meinem DataSource.groovy zu ändern, um einen anderen EhCacheProvider wie einen Singleton zu verwenden.

Unnötig zu sagen, habe ich getestet, einen anderen Namen mit DSL an verschiedenen Orten, aber immer noch kein Glück.

Am Ende verwende ich das alte Plugin für Spring-Cache, die veraltet ist. Kann jemand helfen?

Ich benutze Grails 2.0.3 und ehcache-core:2.5.3.

Antwort

6

Im hibernate Abschnitt DataSource.groovy, stellen Sie sicher, dass Ihr cache.provider.class auf dem neuesten Stand ist:

hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = true 
    cache.region.factory_class = 'grails.plugin.cache.ehcache.hibernate.BeanEhcacheRegionFactory' // For Hibernate before 4.0 
    cache.region.factory_class = 'grails.plugin.cache.ehcache.hibernate.BeanEhcacheRegionFactory4' // For Hibernate before 4.0 and higher 
} 

ich hatte das gleiche Problem, weil mein cache.region.factory_class veraltet war: net.sf.ehcache.hibernate.EhCacheProvider.

Siehe http://grails-plugins.github.io/grails-cache-ehcache/guide/usage.html

+0

Dies ist die richtige Antwort, OP bitte geben Sie diesem Mann seine Requisiten :) –

+1

Beachten Sie, dass, wenn Sie den gleichen Fehler in einer anderen Grails-Version erhalten, möglicherweise eine andere Cache-Factory-Klasse, die Sie für Hibernate verwenden müssen . Die Versionshinweise für Ihre Version (und alle dazwischen liegenden Versionen) sind immer hilfreich, um sie zu überprüfen (z. B. https://github.com/grails/grails-core/releases/tag/v2.4.5). – jonnybot

0

Versuchen Cache & Cache-ehcache Plugins zu verwenden, es mit einigen Einschränkungen für mich funktioniert. Aber für 2ndlevel Cache funktioniert richtig

0

Für Leute hier ankommen der gleiche Fehler wie OP bekommen könnte, dass Fehler prüfen könnte durch eine Aktualisierung einer Domäne Klasse zur Laufzeit (Hot Code-Swap) verursacht werden, die nicht gut in alle getan wird Versionen von Grails.

Ich traf diesen Fehler mit Grails 2.5.4, aber mit der Anwendung Neustart-Taste als die einzige Option zu lösen.