• 因为代理原因导致的NotSerializableException


      错误信息:
      NotSerializableException
      Failed to serialize object
      Proxy
     
      报这个错,一开始就往没有序列化这一块想,可是报错点是:
      excelTableService.sendMessage(smsService,userSession,procInstance,type,cipConfigFile);
     
      这个函数的参数都是有值的。而且这个方法是ServiceBean,本身报错的类又是一个Controller,也是一个Bean,能序列化吗?
      最后试着都加了序列化,仍然报错。
     
     
      错误的原因并不是没有序列化,而是代理的问题。
     
      我们以springMVC的逻辑来想:通过了Controller注入了一个Service,然后又调用了一个另一个Service的方法,把前一个Service当做参数传递进去了。这本身是不是不合逻辑的。在Contriller中注入Service使用的代理,将这个代理再传回Service中,就会获取不到了。
     
      看原来的代码中的方法:
    @SuppressWarnings("unchecked")
    public void sendMessage(SmsService smsService,
                            UserSession userSession,
                            ProcInstance procInstance,
                            String type, String cipConfigFile) throws IOException {
    }

     

      在这个Service中,本来可以直接注入SmsService,和UserSession 这些值的,并不需要从外部传递过来。更改这个Service中的方法后,果然没有了问题。
     
      原创文章,欢迎转载,转载请注明出处!
     

  • 相关阅读:
    将博客搬至CSDN
    第一章 spring起步
    动态规划-最长非降子序列
    硬币问题-动态规划详解
    哲学家就餐
    java并发编程(十九)障碍器CyclicBarrier
    java并发编程(十八)阻塞队列和阻塞栈
    java并发编程(十七)Executor框架和线程池
    java并发编程(十七)内存操作总结
    java并发编程(十六)happen-before规则
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/notSerializableException.html
Copyright © 2020-2023  润新知