java.io.StreamCorruptedException: invalid stream header: 20200909

为什么80%的码农都做不了架构师?>>>   hot3.png

在项目中使用ehcache 缓存,启动tomcat 突然报这个错误。

找了下原因是因为 一个tomcat 下 有两个应用,但是ehcache  路径设置的是同一个,就会报错。修改path 使两个应用的path路径不一样就可以了。

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

通过修改diskStore path="${ehcache.dir.tmp}" ,注意参数ehcache.dir.tmp要进行配置,如修改weblogic的启动脚本或配置脚本setDomainEnv.cmd,setDomainEnv.sh  增加参数:-Dehcache.dir.tmp=路径。tomcat修改方式类似。

 

转载于:https://my.oschina.net/farces/blog/913025

你可能感兴趣的:(java.io.StreamCorruptedException: invalid stream header: 20200909)