在请求dubbo服务的时候有时抛出异常:Caused by: com.alibaba.dubbo.remoting.RemotingException: com.alibaba.com.caucho.hessian.io.HessianFieldException:
java.lang.Throwable.cause: 'java.net.URISyntaxException' could not be instantiated
com.alibaba.com.caucho.hessian.io.HessianFieldException: java.lang.Throwable.cause: 'java.net.URISyntaxException'
could not be instantiated。
据查此异常估计是在dubbo实例化java.net.URISyntaxException类时其uri的格式不符合http://的格式。
也就是业务系统抛出了java.net.URISyntaxException异常,当hessian去序列化java.net.URISyntaxException异常的时候,由于异常的参数信息uri的格式不符合http://格式,所以就导致此异常不能被正常序列化,所以dubbo抛出了HessianFieldException。
解决方法就是查看业务系统为什么会抛出java.net.URISyntaxException异常来给服务调用方,而且此异常封装的uri的信息不符合http://格式。由此可知业务系统的异常就是某个httpClient链接的时候uri配置错误导致的。
还有一个值得深思的是业务系统为什么会抛出这等异常,这些异常应该自己吞掉处理的。