I am trying to use the following jcache-ehcache library to as a wrapper so that I can use Ecache as my JCache implementation.
These are my maven dependancies:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.1.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-jcache</artifactId>
<version>1.4.0-beta1</version>
</dependency>
In my Spring configuration file, I have the following beans:
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="shared" value="true"/>
</bean>
<bean id="userCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheName" value="userCache"/>
<property name="cacheManager" ref="cacheManager"/>
<property name="diskPersistent" value="false"/>
</bean>
<bean id="jcacheUserCache" class="net.sf.ehcache.jcache.JCache">
<constructor-arg index="0" ref="userCache"/>
</bean>
And my Ehcache.xml (on classpath root) file contains the userCache region definition:
<cache name="userCache" maxElementsInMemory="10000"
maxElementsOnDisk="0" eternal="false" overflowToDisk="false"
diskSpoolBufferSizeMB="20" timeToIdleSeconds="0"
timeToLiveSeconds="0" memoryStoreEvictionPolicy="LFU"
statistics = "true">
</cache>
On initialization, I get the following error:
Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jcacheUserCache' defined in class path resource [application-context.xml]: Unsatisfied dependency expressed through constructor argument with index 1 of type [net.sf.ehcache.jcache.JCacheManager]: Ambiguous constructor argument types - did you specify the correct bean references as constructor arguments?
Can anyone provide any assistance with how to correctly initialise this jCacheUserCache bean?
Thanks
The constructor of
net.sf.ehcache.jcache.JCachehas three arguments, but you only provided the first one when creating thejcacheUserCachebean. The error you get is about the missing second parameter (of typenet.sf.ehcache.jcache.JCacheManager).The constructor of
JCachelooks like this:So you also need to provide a
JCacheManagerand aClassLoaderas constructor arguments.(see
JCache.javahere)