在项目中使用ehcache 缓存,启动tomcat 突然报这个错误。
找了下原因是因为 一个tomcat 下 有两个应用,但是ehcache <diskStore path="../temp" /> 路径设置的是同一个,就会报错。修改path 使两个应用的path路径不一样就可以了。
ehcache的原理是将所有的value值序列化后存储到本地磁盘,将一个与之对应的key值存到内存中,建立两者关联。这样就能根据key查找磁盘中的value了,当value值找不到时,或者序列化异常时就出现了你的问题。出现原因一般是这样子:value默认存储到tomcat临时目录tmp下(不同服务器不同系统该路径不同,参考 @红薯 http://www.oschina.net/question/12_2368),当tomcat下多个实例同时往这个目录下写入缓存时,就容易出现问题了。解决方案是指定下diskStore 目录为不同的目录。