报错详情:
在dubbo整合SpringSecurity时,需要使用HttpServletRequest获取信息,代码如下:
结果执行后,查看结果,发现报错,报错信息如下:
io.netty.handler.codec.EncoderException: java.lang.IllegalStateException: Serialized class org.springframework.security.web.firewall.StrictHttpFirewall$StrictFirewalledRequest must implement java.io.Serializable
错误分析:
Dubbo不能序列化HttpServletRequest
解决方案:
出现报错,是因为adminSerive已经注册到Dubbo中,如果将HttpServletRequest直接作为参数传入adminSerive的方法中,Dubbo就会序列化HttpServletRequest。所以我们可以直接避开这一步,先通过HttpServletRequest获取所需数据,再将所需数据作为参数传入到adminSerive的方法中。如下所示: