java.rmi.NoSuchObjectException: no such object in table异常问题解析

                近日部署发送短信程序的服务器发生了宕机的事情,短信服务是采用JAVA RMI的形式供需要发送短信的客户端程序调用来发送短信,在客户端的配置文件中作如下配置。

               

<!-- 发送接口告警短信 -->
	<bean id="smsSender" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
		<property name="serviceUrl">
			<value>rmi://10.25.2.120:9000/SMSService</value>
		</property>
		<property name="serviceInterface">
			<value>com.imcs.sms.cmpp.SmsSender</value>
		</property>
	</bean>

               宕掉的服务器恢复后维护人员重启了RMI服务端程序,但我们有个调用短信的平台却仍未发送短信,检查平台短信发送日志出现如下异常: org.springframework.remoting.RemoteConnectFailureException: Cannot connect to remote service [rmi://10.25.2.120:9000/SMSService]; nested exception is java.rmi.NoSuchObjectException: no such object in table。由此异常分析,调用短信接口的平台仍然调用的是宕机前的rmi服务端,但这时候已经 NoSuchObjectException: no such object in table,但这时候已经找不到这个rmi服务对象了,因为宕机后该rmi服务接口被Java gc销毁了,而客户端此时不会找到重启服务后的RMI服务,所以客户端调用就会找不到该RMI服务对象了,解决办法很简单,因为RMI服务端重启后重新注册了RMI服务,将客户端平台重启即可,这样就可以正常发送短信了。

              总结:对于RMI服务的C(客户端)或者S(服务端),如果服务端重启,则必须相应重启所有调用客户端,不然就会出现如上所述的java.rmi.NoSuchObjectException: no such object in table异常。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值