![](/img/trans.png)
[英]Calling a method annotated with @Cacheable (org.springframework.cache.annotation.Cacheable)
[英]Cache refresh is showing error with @cacheable annotation
有人可以幫我調試這個錯誤嗎?
2015-03-11 14:59:03,844 [cachename.data]錯誤nsestore.disk.DiskStorageFactory - 磁盤寫入-351643849550012失敗: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(原生方法)〜[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.io.Object.Startod.invoke(Method.java:597)〜[na:1.6.0_45] at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:940) 〜[NA:1.6.0 _ java] 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 net.sf.ehcache.store.disk.DiskStorageFactory.serializeElement(DiskStorageFactory.java:399)〜[[。 ehcache-2.8.1.jar:2.8.1]在net.sf.ehcache.store.disk.DiskStorageFactory.write(DiskStorageFactory.java:381)〜[ehcache-2.8.1.jar:2.8.1] 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 ne t.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] 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]
我正在使用帶有@cacheable注釋的緩存刷新:
CacheFetchDao.java
@Cacheable(cacheName = "cachename",refreshInterval=10000, decoratedCacheType= DecoratedCacheType.REFRESHING_SELF_POPULATING_CACHE)
//@Cacheable( value = "cachename", key = "#key")
public List<Account> getAccounts(String key) {
//call to database
return res;
}
CachefetchEndpoint.java
@GET
@Path("/Accounts")
@WebMethod(operationName = "Accounts")
public List<Account> Accounts() {
return dao.getAccounts("accounts");
}
ehcache.xml中
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true"
monitoring="autodetect"
dynamicConfig="true">
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"/>
<!-- The cache configuration for our Currency cache -->
<cache name="cachename"
maxElementsInMemory="3000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
<persistence strategy="localTempSwap"/>
</cache>
</ehcache>
和config.xml
<ehcache:annotation-driven cache-manager="ehcache" />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcache" />
</bean>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" >
<property name="configLocation" value="ehcache.xml" />
</bean>
我希望您的帳戶類型實現Serializable接口? 你也可以發帖嗎?
我通過刪除diskPersistent =“false”解決了這個問題。 diskPersistent =“false”不能與decoratedCacheType = DecoratedCacheType.REFRESHING_SELF_POPULATING_CACHE一起使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.