最近迁移网络的时候碰到了一个奇怪的问题,服务器迁移到了新的网络导致IP发生变化(IP 2.2.2.2->1.1.1.1),于是在修改了服务器上的ActiveMq的配置文件中IP改成了新的1.1.1.1,然后启动了ActiveMq,这个时候activeMq的管理端口是8891是基于RMI协议的。然后在客户端将配置的activeMq的IP修改成新的IP:1.1.1.1,重启了客户端,但是不幸的是客户端报错了,报错信息为:java.rmi.ConnectException: Connection refused to host: 2.2.2.2。 当时被这个问题困扰了很久,不明白为什么客户端配的是新的IP:1.1.1.1,但是报错信息中却去连接到老的IP:2.2.2.2。后来去了解了一下RMI协议才知道原因。其实是由RMI服务器端程序造成的。客户端程序向服务端请求一个对象的时候,返回的stub对象里面包含了服务器的hostname,客户端的后续操作根据这个hostname来连接服务器端。然后我再服务器端通过命令:hostname -i 查看了hostname的值,果然是老的IP,2.2.2.2, 这样就明白了整个问题的根本,linux上配置hostname和IP的对应关系的文件是/etc/hosts,所以就去查看了一下这个文件,果然配置老的IP,于是将其中的配置修改成新的IP并重启activeMq之后,客户端就能成功连接到8891端口。所以对于一些使用了RMI的程序,如果在IP发生变化之后,一定要检查一下/etc/hosts中是否配置了老的IP,不然可能会导致客户端无法连接错误。
RMI 调用问题
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 个人专题目录[https://www.jianshu.com/p/140e2a59db2c] 一、JMS简介 全称...
- 春节过后的第一个工作日,想必大家都还没从假期的节奏中缓过来。但是咱们简书可是迫不及待地更新了新功能哦,也是蛮拼的!...