dubbo獲取本機IP

發佈Java應用到阿里雲,啓動失敗,部分堆棧以下:java

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.net.InetAddress.checkLookupTable(InetAddress.java:1393)
...
at com.alibaba.dubbo.common.utils.NetUtils.getLocalAddress0(NetUtils.java:188)
at com.alibaba.dubbo.common.utils.NetUtils.getLocalAddress(NetUtils.java:180)
at com.alibaba.dubbo.common.utils.NetUtils.getLocalHost(NetUtils.java:146)
at com.alibaba.dubbo.common.logger.support.FailsafeLogger.appendContextMessage(FailsafeLogger.java:40)
at com.alibaba.dubbo.common.logger.support.FailsafeLogger.warn(FailsafeLogger.java:110)
at com.alibaba.dubbo.common.utils.NetUtils.getLocalAddress0(NetUtils.java:220)
at com.alibaba.dubbo.common.utils.NetUtils.getLocalAddress(NetUtils.java:180)
at com.alibaba.dubbo.common.utils.NetUtils.getLocalHost(NetUtils.java:146)
at com.alibaba.dubbo.common.logger.support.FailsafeLogger.appendContextMessage(FailsafeLogger.java:40)

看了代碼,發現是dubbo的小bug:getLocalHost失敗會調用日誌打印,日誌打印的時候會自動帶上本機域名(調用getLocalHost),形成循環調用。app

2種解決方法:阿里雲

  1. 在 /etc/hosts 指定域名解析(自定義了hostname,可是沒設定對應IP)
  2. 升級到dubbo 2.6.3或後續版本

指定域名解析的方式還有其它用途:daily環境從內網遷移到阿里雲,指定解析爲外網IP,方便在內網調用。.net

相關文章
相關標籤/搜索