【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()下列属性即可解决该问题。


 

 

posted @ 2025-04-09 18:48  Angel挤一挤  阅读(36)  评论(0)    收藏  举报