java.rmi.NoSuchObjectException故障排除记录

前天项目测试环境出现java.rmi.NoSuchObjectException: no such object in table错误,耗费了我两天时间,终于找到真实原因。

测试环境有两台Linux机器,都发布同样的RMI服务,其中一台机器的RMI服务可以正常访问,另外一台机器的RMI服务启动时没有错误,但用客户端连接时出现java.rmi.NoSuchObjectException: no such object in table错误。

首先google一下,发现很多情况下这个错误是由于hosts文件不正确导致的,修改hosts文件,无效。

其次,判断错误原因应该是服务器的网络相关配置有问题,查看相关配置文件,也没发现问题。

然后,仔细看RMI服务端启动日志,发现相关日志为:
Binding service 'aService' to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[192.168.10.59:54321](local),objID:[0:0:0, 0]]]]
Binding service 'bService' to RMI registry: RegistryImpl_Stub[UnicastRef [liveRef: [endpoint:[192.168.10.60:54321](remote),objID:[0:0:0, 0]]]]
而这台机器的ip为192.168.10.60,不是59,这就奇怪了,为啥第二个RMI服务注册地址是正确,而第一个RMI服务注册地址就错了呢?

由于我是用Spring来配置RMI服务的,阅读Spring相关源代码试图找到原因,也未果。

其间又google了很多资料,都没解决这个问题。

刚才,我无意中看了一下启动RMI服务的脚本文件,这才感到写这个文件的人可恨,浪费我两天时间。
这个脚本文件是这样写的:
screen ant runEngine -Dhostname=192.168.10.59
将其中的192.168.10.59改为192.168.10.60,问题就解决了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值