在網上查,dubbo怎麼去獲取本機ipjava
翻看dubbo源碼,在NetUtils
中的getLocalAddress0
這個方法vim
dubbo獲取本機全部網卡中的ip地址,而後拿到第一個不是127.0.0.1
的那個ip服務器
設置服務器上的hosts,vim /etc/hosts
網絡
192.168.72.235 localhost hostname # 192.168.72.235 服務器ip # localhost # hostname 是主機名,在/etc/sysconfig/network進行配置
公司採用dubbo框架做爲遠程服務調用實現方案,爲方便測試,寫了個工程,直接調dubbo接口進行測試。遇到了一系列奇怪的問題,故記錄於此。框架
Q:No provider available for the service com.netease.wyxd.xiezhi.client.open.provider.DetectProvider from registry 10.165.124.69:2181 on the consumer 192.168.233.1 using the dubbo version 2.8.4. Please check if the providers have been started and registered.ide
A:提示我這個ip地址沒法調用到服務提供者,先看下dubbo admin上是否存在,確認無問題。哦有個地方,就是服務註冊在zk上 默認採用的是機房網絡地址(這裏機器有私網地址、機房地址、公網地址,機房網絡地址主要是爲了服務器之間的通訊,本地服務調服務器通常是用私網或者公網),因爲服務在admin上暴露出來的地址是機房網絡地址,因此須要在環境變量上加個配置 -Ddubbo.protocol.host=10.165.124.89 或者在dubbo.properties裏面加測試
我這裏的問題比較奇怪 這個消費者的ip並非個人本機ip 因此我清了一把網絡 好了 個人公網地址應該是10.242.111.206 這個纔是我正常的ipurl
Q: java.lang.IllegalStateException: Unsupported protocol hessian in notified urlspa
A: 這個查了很久 網上沒幾個 後來我本身試了 是由於hession.jar包沒有加 == ORZ....net