【Dubbo】 dubbo接口调用,响应出现 栈溢出,递归toString"localizedMessage": "java.lang.StackOverflowError\njava.lang.StackOverflowError\n\tat java.util.AbstractMap.toString
今日dubbo接口调用,响应出现如下异常:
{ "@type": "java.util.concurrent.ExecutionException", "cause": { "@type": "org.apache.dubbo.remoting.RemotingException", "localAddress": { "address": "10.56.170.42", "port": 38246 }, "localizedMessage": "java.lang.StackOverflowError\njava.lang.StackOverflowError\n\tat java.util.AbstractMap.toString(AbstractMap.java:548)\n\
tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat
com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\tat java.lang.String.valueOf(String.java:2994)\n\
tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\
tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat
com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\
tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\
tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat com.xxx.ware.api.ware.view.WareDetailTinyVO.toString(WareDetailTinyVO.java:18)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:136)\n\tat java.util.AbstractCollection.toString(AbstractCollection.java:462)\n\
接口内部其实已经完成了入参及出参的正常处理:
那为什么 dubbo响应 出现 栈溢出? 提醒出现递归?
是因为 接口响应的对象中,出现了 Map或 嵌套的List结构,导致该问题。
而POJO使用的 @Data注解,是默认的toString()方法,因此要解决该问题。只需要 显式重写toString()方法,去掉可能造成 递归的 Map属性或嵌套List属性。
如下,重写该VO的toString()方法,不要toString()下列属性即可解决该问题。



浙公网安备 33010602011771号