Serialization problem reported when loading class

 

 

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

 

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326082224&siteId=291194637