2013-03-27 21 views
5

Używam aplikacji Grails używając ehcache dla mojej pamięci podręcznej drugiego poziomu i działa. Zainstalowałem plugin ehcache + cache, a następnie nie. Próbowałem prawie wszystkich rozwiązań z Internetu i nie znalazłem żadnego rozwiązania, które dostanę w dalszym ciągu Another unnamed CacheManager already exists in the same VM.Grails ehcache plugin - Inny nienazwany CacheManager już istnieje w tym samym VM

Jednym z możliwych rozwiązań jest ustawienie p:shared=true w EhCacheManagerFactoryBean, działa to, jeśli używam starej wtyczki "springcache plugin from grails", ale z nową wtyczką używają zmodyfikowanej wersji tego menedżera, a właściwość shared nie jest dostępny.

Próbowałem zdefiniować nowy plik ehcache.xml, ale nadal nie mogę wprowadzić nowej nazwy dla tego menedżera pamięci podręcznej.

Próbowałem zmienić klasę cache.provider w moim DataSource.groovy, aby używać siebie EhCacheProvider, takich jak Singleton.

Nie trzeba dodawać, przetestowałem wprowadzanie różnych nazw za pomocą DSL w różnych miejscach, ale wciąż nie ma szczęścia.

Na koniec używam starej wtyczki dla bufora wiosennego, który jest przestarzały. Czy ktokolwiek może pomóc?

Używam Grails 2.0.3 i ehcache-core:2.5.3.

Odpowiedz

6

W sekcji hibernate z DataSource.groovy, upewnij się, że cache.provider.class jest aktualne:

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 
} 

miałem ten sam problem, ponieważ mój cache.region.factory_class był przestarzały: net.sf.ehcache.hibernate.EhCacheProvider.

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

+0

To jest poprawna odpowiedź, OP proszę dać temu człowiekowi jego rekwizyty :) –

+1

Warto zauważyć, że jeśli otrzymujesz ten sam błąd w innej wersji Grails, może istnieć inna klasa fabryki pamięci podręcznej, której potrzebujesz do Hibernacji . Uwagi do wydania dla twojej wersji (i wszelkich wersji pośrednich) są zawsze przydatnym miejscem do sprawdzenia (np. Https://github.com/grails/grails-core/releases/tag/v2.4.5). – jonnybot

0

Spróbuj użyć buforuje & Cache-ehcache wtyczek, to działa na mnie z pewnymi ograniczeniami. Ale dla 2ndlevel Cache działać poprawnie

0

Dla osób przybywających tu otrzymuję ten sam błąd jak OP może rozważyć ten błąd może być spowodowany przez aktualizację klasy domeny w czasie wykonywania (kod hot swap), która nie odbywa się ładnie w Alle wersje Grails.

Uderzyłem tego błędu w Grails 2.5.4, ale z przyciskiem restartu aplikacji jako jedyną opcją do rozwiązania.