因为代理原因导致的NotSerializableException
Posted 阿丙的博客园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了因为代理原因导致的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中的方法后,果然没有了问题。
原创文章,欢迎转载,转载请注明出处!
以上是关于因为代理原因导致的NotSerializableException的主要内容,如果未能解决你的问题,请参考以下文章