java-RMI问题:服务器关闭后,对象引用会发生什么?

有人可以帮忙吗?

问:应用程序服务器通过调用Naming.rebind()在RMI注册表中注册对象.一段时间后,服务器应用程序关闭.解释在注册表中注册的对象引用将发生什么情况.

答:我认为该引用在注册表中保留了一段时间,但是在该时间段(“租赁期”?)之后,本地垃圾收集器可以删除该引用.

我不知道“租用期”概念是否仅对客户有效(使用脏电话和干净电话),所以也许我误解了rmi的来源…

解决方法:

您的答案不正确. DGC租约到期不会导致将远程对象从注册表中删除.该条目将永久保留在注册表中,或者直到注册表退出或有人将其解除绑定.

实际发生的是存根“过时”.客户端仍然可以在注册表中查找它,或者保留它们已经拥有的一个,但是如果服务器JVM仍在运行,则任何使用它的尝试(即通过它调用远程方法)都将引发NoSuchObjectException,否则将引发ConnectException.

上一篇:java入门16 -- http编程


下一篇:JAVA设计模式学习笔记-代理模式