Serialization problem reported when loading class
1. The serialization interface is not implemented, and the serial number is added.
2. The service implements or inherits the serialization interface, and the subclass implements it
2. The subclass uses toString()
Added a toString() implementation, so the internal jvm-auto-calculated
serialVersionUID is different from before.
due to
The key class implements Externalizable, so the implementation may also change once:
3, different jvm versions
672853 [http-bio-8080-exec-3] WARN 2017-12-05 15:30:07 org.apache.shiro.mgt.DefaultSecurityManager - Delegate RememberMeManager instance of type [org.apache.shiro.web.mgt.CookieRememberMeManager] threw an exception during getRememberedPrincipals().
org.apache.shiro.io.SerializationException: Unable to deserialze argument byte array.
at org.apache.shiro.io.DefaultSerializer.deserialize(DefaultSerializer.java:82)
at org.apache.shiro.mgt.AbstractRememberMeManager.deserialize(AbstractRememberMeManager.java:514)
at org.apache.shiro.mgt.AbstractRememberMeManager.convertBytesToPrincipals(AbstractRememberMeManager.java:431)
at org.apache.shiro.mgt.AbstractRememberMeManager.getRememberedPrincipals(AbstractRememberMeManager.java:396)
at org.apache.shiro.mgt.DefaultSecurityManager.getRememberedIdentity(DefaultSecurityManager.java:604)
at org.apache.shiro.mgt.DefaultSecurityManager.resolvePrincipals(DefaultSecurityManager.java:492)
at org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:342)
at org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
at org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
at org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.common.CrossDomainFilter.doFilter(CrossDomainFilter.java:62)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: Unable to load ObjectStreamClass [[Lcore.apps.rbac.vo.FlexGrantedAuthority;: static final long serialVersionUID = 7325751928510350430L;]:
at org.apache.shiro.io.ClassResolvingObjectInputStream.resolveClass(ClassResolvingObjectInputStream.java:55)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1868)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1930)
Processing method: For example, go to the toString() method
package core.apps.rbac.vo; import core.apps.rbac.entity.SkillInfoEntity; import org.acegisecurity.GrantedAuthority; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class FlexGrantedAuthority implements GrantedAuthority { private static final long serialVersionUID = -2626208595738823534L; private String role; private List<SkillInfoEntity> skillUrls = new ArrayList(); public List<SkillInfoEntity> getSkillUrls() { return this.skillUrls; } public void setSkillUrls(List<SkillInfoEntity> skillUrls) { this.skillUrls = skillUrls; } public String getRole() { return this.role; } public void setRole(String role) { this.role = role; } public String getAuthority() { return this.role; } //public String toString() //{ // return this.role; //} }
refer to:
http://grokbase.com/t/shiro/user/09b4h1afs0/serializationexception