`
y806839048
  • 浏览: 1126378 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

加载类的时候报序列化问题

阅读更多

 

 

加载类的时候报序列化问题

1,没有实现序列化接口,加序列号

2,服务有实现或继承了序列化接口,子类又实现

2,子类用了toString()

 

添加了一个toString()实现,所以内部的jvm-auto-calculated 

serialVersionUID与之前不同。

 

由于

关键类实现了Externalizable,所以实现也可能会改变一次:

 

3,jvm版本不同

 

 

 

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)

 

 

 

处理方式:例如去了toString()方法

 

 

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;
 //}

}

 

 

 

 

参考:

http://grokbase.com/t/shiro/user/09b4h1afs0/serializationexception

 

 

 

分享到:
评论

相关推荐

    构造java探测class反序列化gadget1

    要构造一个探测gadget,我们需要创建一个特殊的序列化数据流,它能够触发特定的类加载,同时避开serialVersionUID的检查。这通常涉及到对Java序列化格式的深入理解以及对 ysoserial 工具的熟悉,ysoserial 是一个...

    北大青鸟-影院售票系统PPT

    "北大青鸟-影院售票系统PPT" 本资源是关于北大青鸟的影院售票系统的讲解文档,涵盖了该...该系统使用了多种设计模式和技术,例如简单工厂模式、多态、接口、序列化和反序列化等,提供了一个灵活、可扩展的解决方案。

    spring security4登陆例子

    - **`AbstractSecurityWebApplicationInitializer`**:此抽象类用于初始化Spring Security配置。 - **`super(SecurityConfig.class);`**:这里指定了主配置类`SecurityConfig`。 #### 四、登陆验证:从数据库获取...

    C# 15个范例

    在C#中,我们可以使用BinaryFormatter或XmlSerializer类来实现对象的序列化与反序列化。这对于保存游戏进度、应用程序配置或者在网络间传递对象信息都非常有用。例如,通过实现ISerializable接口或使用[Serializable...

    Java加载资源文件时的路径问题的解决办法

    例如,要获取demo包内的names.ser序列化文件,可以使用以下代码: URL url2 = ClassLoader.getSystemClassLoader().getResource("demo/names.ser"); 第二种常用的方法是使用当前类的getResource方法来加载资源文件...

    Java小聊天程序

    Java提供了`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`类来进行对象的序列化和反序列化。 5. **异常处理** - UDP通信过程中可能会遇到各种异常,如网络中断、数据包丢失等。因此,程序必须包含...

    C#通信范例原代码加注释

    在通信范例中,我们可能会看到如何使用`System.Xml.Serialization`或`System.Text.Json`进行数据序列化和反序列化。 在处理文件I/O时,C#提供了丰富的类库,如`System.IO.File`和`System.IO.StreamReader/...

    md_data_20150101_20201231.rar

    Pickle是Python中用于序列化和反序列化对象的模块,它能将Python对象结构转化为字节流,然后在需要时恢复这些对象。这种格式常用于存储和加载数据集,特别是当数据需要在不同的程序之间共享或者长期保存时。 1. **...

    数据库课程设计之影院售票系统

    7. **序列化和反序列化**: - 为了保存销售情况,系统利用了序列化技术将对象的状态转化为可以存储或传输的格式。反序列化则是将这些数据恢复为原来的对象状态,以便于后续读取和分析销售数据。 8. **类设计**: ...

    影院售票系统设计过程ppt

    - 销售情况的保存和读取需要用到序列化和反序列化技术。这样,系统可以将当前的销售状态(如已售出的票)转换为文件存储,下次启动时再从文件中恢复。 8. **动态加载座位**: - 系统需要动态地在界面上加载座位...

    类qq聊天工具

    10. **IO流**: `InputStream` 和 `OutputStream` 是基础的I/O流类,它们的子类如`FileInputStream`和`FileOutputStream`用于文件操作,而`DataInputStream`和`DataOutputStream`则可以用于序列化和反序列化数据。...

    redis-session-manager-tomcat6共享包

    这个问题可能源于代码逻辑处理不当,或者在序列化和反序列化过程中对null值的处理不正确。修复这个问题后,现在这个包应该能够更稳定地处理包括null值在内的各种session数据,避免程序异常中断。 这个"redis-...

    QT下使用的Protobuf(Protocol Buffer)动态链接库

    Protocol Buffers是一种序列化协议,它允许数据以结构化的格式进行存储和传输,广泛应用于跨平台的数据交换和网络通信。 描述中提到的问题是,默认情况下,Protobuf为Windows平台提供的编译版本是静态链接库,这...

    100个Java经典例子后端- Java

    4. **输入/输出(I/O)**: 文件操作、流的概念、序列化和反序列化,例如FileReader、FileWriter、BufferedReader、BufferedWriter等类的使用。 5. **网络编程**: Socket编程用于实现客户端和服务器间的通信,如TCP...

    C#经典示例之MyQQ

    4. **数据序列化与反序列化**:消息在客户端和服务端之间传输时,通常需要转换为二进制或JSON等格式。C#提供了BinaryFormatter、XmlSerializer和Newtonsoft.Json库等工具,用于数据的序列化和反序列化。 5. **用户...

    Java基础.docx

    15. **Socket 通信注意事项**:在使用 TCP 通信时,对象传输需序列化,文件传输需使用输入/输出流。UDP 通信则更简单,但需要处理数据包的排序和丢失问题。 以上内容涵盖了 Java 基础的多个关键知识点,对于深入...

    java基础反射IO流线程模式

    - **ObjectInputStream/ObjectOutputStream**:用于对象序列化和反序列化的流。 - **Scanner类** - `Scanner`类主要用于从标准输入或其他输入源读取数据,支持多种数据类型的解析。 ### 正则表达式 正则表达式是...

    JAVA面试题集-JAVA面试题集

    需要注意的是,串行化可能引发的安全问题,如反序列化时的代码注入。 6. **线程的基本概念和状态**:线程是程序中的执行单元,可以并发执行。线程的状态包括新建、就绪、运行、阻塞和死亡。状态之间通过特定条件...

    c++约瑟夫环

    3. **数据保存与加载**:程序可能提供了保存和加载功能,这需要对序列化的支持。C++可以使用`fstream`类进行文件读写,将约瑟夫环的状态(如剩余人数、当前报数、链表或数组状态等)序列化为文件,以便在程序重新...

    java面试大全.doc

    - Dubbox是Dubbo的升级版,增加了如RESTful API支持、更高效的序列化机制(Kryo和FST)、基于Jackson的JSON序列化、内嵌Tomcat支持等新特性。 3. **ArrayList与LinkedList的区别** - ArrayList基于动态数组,适合...

Global site tag (gtag.js) - Google Analytics