2012-03-09 33 views
11

Estoy intentando habilitar el almacenamiento en memoria caché de objetos en una aplicación existente de Spring 3.1.1 con Hibernate 3.5.5. Estoy usando ehcache 2.2.0. En mi applicationContext, he agregado la configuración para activar el almacenamiento en caché con EHCache.Configuración de EHCache para Spring3.1.1 e Hibernate

<cache:annotation-driven /> 
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    p:cache-manager="ehcache" /> 
<bean id="ehcache" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" 
    p:config-location="ehcache.xml" /> 

Entonces creó el archivo ehcache.xml:

<diskStore path="java.io.tmpdir" /> 

<defaultCache 
    eternal="false" 
    maxElementsInMemory="1000" 
    overflowToDisk="false" 
    diskPersistent="false" 
    timeToIdleSeconds="0" 
    timeToLiveSeconds="0" 
    memoryStoreEvictionPolicy="LRU"/> 

<cache name="studentCache" 
    eternal="false" 
    maxElementsInMemory="10000" 
    overflowToDisk="false" 
    diskPersistent="false" 
    timeToIdleSeconds="0" 
    timeToLiveSeconds="0" 
    memoryStoreEvictionPolicy="LRU" /> 

añadí las dependencias necesarias en el archivo pom.xml para ehcache. Pero ahora estoy recibiendo este error:

Initialization of bean failed; 
nested exception is org.springframework.beans.ConversionNotSupportedException: 
Failed to convert property value of type 'java.lang.String' to required type 
'net.sf.ehcache.CacheManager' for property 'cacheManager'; 
nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [java.lang.String] to required type 
[net.sf.ehcache.CacheManager] for property 'cacheManager': 
no matching editors or conversion strategy found

¿Alguien tiene alguna idea de lo que está causando esto?

+1

la suya debe trabajar ... aquí es mi configuración de trabajo si ayuda: aweigold

+0

@aweigold Gracias. Eso parece funcionar por alguna razón. Me faltaba el elemento de propiedad. ¿Por qué no agregas tu comentario como respuesta para poder aceptarlo? –

+0

Genial, me alegro de que haya ayudado. – aweigold

Respuesta

13

Necesita hacer referencia a su propiedad de cacheManager de manera diferente. Esta es la forma en que lo tengo funcionando:

<cache:annotation-driven /> 
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> 
<property name="cacheManager"><ref local="ehcache"/></property> 
</bean> 
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml"/> 
+0

Gracias! Esto funcionó para mí, curioso por qué la configuración documentada no ... –

11

respuesta @aweigold 's es perfecto, pero una solución más clara se puede lograr si se pasa la referencia de frijol 'ehcache' usando 't: cacheManager-ref'.

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    p:cacheManager-ref="ehcache" /> 
0

El mismo que en el último mensaje sólo sin error en el nombre del atributo:

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache" /> 
+0

Gracias @Bogdan, he corregido el error tipográfico. – emrahkocaman

2

Incluir la dependencia a continuación

<dependency> 
    <groupId>net.sf.ehcache</groupId> 
    <artifactId>ehcache-core</artifactId> 
    <version>2.3.1</version> 
</dependency> 
Cuestiones relacionadas