title: Cache refresh is showing error with @cacheable annotation
body: <p>Can someone help me to debug this error ?</p>
  
  <blockquote>
    <p>2015-03-11 14:59:03,844 [cachename.data] ERROR
    n.s.e.store.disk.DiskStorageFactory - Disk Write of -351643849550012
    failed:  java.io.NotSerializableException:
    com.googlecode.ehcache.annotations.RefreshableCacheEntry  at
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
    ~[na:1.6.0_45]    at
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    ~[na:1.6.0_45]    at
    java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422)
    ~[na:1.6.0_45]    at
    net.sf.ehcache.Element.writeObject(Element.java:867)
    ~[ehcache-2.8.1.jar:2.8.1]    at
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ~[na:1.6.0_45]    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    ~[na:1.6.0_45]    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    ~[na:1.6.0_45]    at java.lang.reflect.Method.invoke(Method.java:597)
    ~[na:1.6.0_45]    at
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:940)
    ~[na:1.6.0_45]    at
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    ~[na:1.6.0_45]    at
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    ~[na:1.6.0_45]    at
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    ~[na:1.6.0_45]    at
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    ~[na:1.6.0_45]    at
    net.sf.ehcache.util.MemoryEfficientByteArrayOutputStream.serialize(MemoryEfficientByteArrayOutputStream.java:97)
    ~[ehcache-2.8.1.jar:2.8.1]    at
    net.sf.ehcache.store.disk.DiskStorageFactory.serializeElement(DiskStorageFactory.java:399)
    ~[ehcache-2.8.1.jar:2.8.1]    at
    net.sf.ehcache.store.disk.DiskStorageFactory.write(DiskStorageFactory.java:381)
    ~[ehcache-2.8.1.jar:2.8.1]    at
    net.sf.ehcache.store.disk.DiskStorageFactory$DiskWriteTask.call(DiskStorageFactory.java:473)
    ~[ehcache-2.8.1.jar:2.8.1]    at
    net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1067)
    [ehcache-2.8.1.jar:2.8.1]     at
    net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1051)
    [ehcache-2.8.1.jar:2.8.1]     at
    java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    [na:1.6.0_45]     at
    java.util.concurrent.FutureTask.run(FutureTask.java:138) [na:1.6.0_45]
      at
    java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
    [na:1.6.0_45]     at
    java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
    [na:1.6.0_45]     at
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    [na:1.6.0_45]     at
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    [na:1.6.0_45]     at java.lang.Thread.run(Thread.java:662) [na:1.6.0_45]</p>
  </blockquote>
  
  <p>I am using cache refresh with @cacheable annotation:</p>
  
  <p>CacheFetchDao.java </p>
  
  <pre><code>@Cacheable(cacheName = "cachename",refreshInterval=10000, decoratedCacheType= DecoratedCacheType.REFRESHING_SELF_POPULATING_CACHE)
  //@Cacheable( value = "cachename", key = "#key")
  public List&lt;Account&gt; getAccounts(String key) {
      //call to database
      return res;
  }
  </code></pre>
  
  <p>CachefetchEndpoint.java</p>
  
  <pre><code>    @GET
  @Path("/Accounts")
  @WebMethod(operationName = "Accounts")
  public List&lt;Account&gt; Accounts() {
      return dao.getAccounts("accounts");
  }
  </code></pre>
  
  <p>ehcache.xml</p>
  
  <pre><code>&lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="ehcache.xsd" 
      updateCheck="true"
      monitoring="autodetect" 
      dynamicConfig="true"&gt;
  
      &lt;diskStore path="java.io.tmpdir"/&gt;  
  
      &lt;defaultCache    
          maxElementsInMemory="100"  
          eternal="false"    
          timeToIdleSeconds="120"    
          timeToLiveSeconds="120"    
          overflowToDisk="true"    
          diskSpoolBufferSizeMB="30"    
          maxElementsOnDisk="10000000"    
          diskPersistent="false"    
          diskExpiryThreadIntervalSeconds="120"    
          memoryStoreEvictionPolicy="LRU"/&gt;  
  
      &lt;!-- The cache configuration for our Currency cache --&gt;  
      &lt;cache name="cachename"  
          maxElementsInMemory="3000"  
          eternal="false" 
          timeToIdleSeconds="120"  
          timeToLiveSeconds="120"  
          &lt;persistence strategy="localTempSwap"/&gt;
      &lt;/cache&gt;  
  &lt;/ehcache&gt;  
  </code></pre>
  
  <p>and config.xml</p>
  
  <pre><code> &lt;ehcache:annotation-driven cache-manager="ehcache" /&gt;
  
  &lt;bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"&gt;
          &lt;property name="cacheManager" ref="ehcache" /&gt;
          &lt;/bean&gt;
  
  &lt;bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" &gt;
              &lt;property name="configLocation" value="ehcache.xml" /&gt;
  &lt;/bean&gt;  
  </code></pre>