java.rmi.ConnectException: Connection refused to host: 127.0.0.1

本文介绍了解决RMI在Windows与Linux间因localhost解析差异导致的服务端与客户端无法正常连接的问题。通过指定IP地址或修改hosts文件等方式,确保跨平台服务能够成功绑定和查找。

解决问题方法如下: 

在服务端的 Naming.rebind("SectionWorkerManager", manager );没有指定ip,(这个语句在Windows下没问题)linux系统自己使用localhost 
解析为IP 127.0.0.1,当客户端向服务器Lookup时,服务端就会把解析出来的地址发给客户端,让客户端再根据这个地址去 
连接,客户端收到127.0.0.1这个地址去连接,实际连接的是自己本身,当然也就不行了。 

更正办法:把Naming.rebind("SectionWorkerManager", manager); 
改成Naming.rebind("rmi://10.1.5.xxx:1099/SectionWorkerManager", manager);,直接用IP地址(10.1.5.xxx:1099为服务器本身IP),这样就没问题了; 
或者是用机器名,该服务器的名字为RHELTEST,把它加到服务器的hosts文件中,并放在127.0.0.1之前,以让该服务能正确解析出来机器 
名所对应的IP;要么用域名解析也行,这种方法比较适合大规模场合。 

在Windows下能正常工作,在linux下却不行,这可能是操作系统解析localhost为ip时时的机制不一样引起的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值