在网上查,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