Shiro系列-常见问题处理
程序员七平错误一
错误描述:
ERROR [authentication_cache.data] net.sf.ehcache.store.disk.DiskStorageFactory - Disk Write of weyoung failed:
java.io.NotSerializableException: org.apache.shiro.util.SimpleByteSource
错误原因:
- 因为ehcache开启了缓存存储到物理影片上,所以需要序列化对象;
- SimpleByteSource没有默认构造方法,导致反序列化的时候失败。
1 2 3 4 5 6 7 8
| <cache name="authentication_cache" maxElementsInMemory="1000" eternal="true" timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="true" diskPersistent="true" memoryStoreEvictionPolicy="LRU"/>
|
解决办法:
新建类:
ByteSourceUtils.java
1 2 3 4 5 6 7 8 9
| public class ByteSourceUtils { public static ByteSource bytes(byte[] bytes) { return new MySimpleByteSource(bytes); }
public static ByteSource bytes(String arg0) { return new MySimpleByteSource(arg0.getBytes()); } }
|
新建类:
MySimpleByteSource.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public class MySimpleByteSource extends SimpleByteSource implements Serializable {
private static final long serialVersionUID = 2719919888511993867L;
public MySimpleByteSource(byte[] bytes) { super(bytes); } }
|