【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號