JavaRMI存根对象生存期

JavaRMI存根对象生存期,java,rmi,Java,Rmi,当java rmi存根对象变得无效时 1-客户端和服务器之间的链接断开后。(重新建立连接后存根是否有效,或是否仍需要刷新) 2-在特定超时之后 我想获取存根并将其存储在应用程序范围中。两者都不需要。当相应的远程对象未报告时,它将变得无效,这只能在远程对象未报告时发生,无论是显式的还是由于本地垃圾收集。本地GC只能在分布式垃圾收集(DGC)发生后发生,这意味着对于远程对象的每个客户端,要么它允许其存根在其自己的JVM中进行本地GC,要么它与远程对象主机的网络路径断开连接足够长的时间,以使DGC过期

当java rmi存根对象变得无效时

1-客户端和服务器之间的链接断开后。(重新建立连接后存根是否有效,或是否仍需要刷新)

2-在特定超时之后


我想获取存根并将其存储在应用程序范围中。

两者都不需要。当相应的远程对象未报告时,它将变得无效,这只能在远程对象未报告时发生,无论是显式的还是由于本地垃圾收集。本地GC只能在分布式垃圾收集(DGC)发生后发生,这意味着对于远程对象的每个客户端,要么它允许其存根在其自己的JVM中进行本地GC,要么它与远程对象主机的网络路径断开连接足够长的时间,以使DGC过期生效,这需要一个可配置的时间,默认情况下是(过去是?)10分钟。

两者都不是。当相应的远程对象未报告时,它将变得无效,这只能在远程对象未报告时发生,无论是显式的还是由于本地垃圾收集。本地GC只能在分布式垃圾收集(DGC)发生后发生,这意味着对于远程对象的每个客户端,要么它允许其存根在其自己的JVM中进行本地GC,要么它与远程对象主机的网络路径断开连接足够长的时间,以使DGC过期生效,这需要一个可配置的时间,默认情况下是(过去?)10分钟。

我不理解您的答案有点复杂。远程对象是指存根或骨架。@ayengin(a)这是一个复杂的主题。(b) 同样,两者都不是。远程对象是实现远程接口的对象。通常它扩展了
UnicastRemoteObject
,或者通过
UnicastRemoteObject.exportObject()
导出,在rmi服务器上,我成功地在cient端获得了一个存根。我想知道这个存根何时失效。我没有使用分布式jarbage collector。我应该在存根有效时尝试使用相同的存根,还是为用户的每个会话创建一个存根。@ayengin不管你是否知道,你确实在使用DGC。我只能重复一次,存根在远程对象未报告之前保持有效。如果使用“过时”存根,将得到NoSuchObjectException。这告诉您重新获取它,例如通过另一次查找。我不理解您的答案有点复杂。远程对象是指存根或骨架。@ayengin(a)这是一个复杂的主题。(b) 同样,两者都不是。远程对象是实现远程接口的对象。通常它扩展了
UnicastRemoteObject
,或者通过
UnicastRemoteObject.exportObject()
导出,在rmi服务器上,我成功地在cient端获得了一个存根。我想知道这个存根何时失效。我没有使用分布式jarbage collector。我应该在存根有效时尝试使用相同的存根,还是为用户的每个会话创建一个存根。@ayengin不管你是否知道,你确实在使用DGC。我只能重复一次,存根在远程对象未报告之前保持有效。如果使用“过时”存根,将得到NoSuchObjectException。这会告诉您重新获取它,例如通过另一次查找。