Java RMI:检查客户端崩溃

Java RMI:检查客户端崩溃,java,client-server,rmi,rmiregistry,Java,Client Server,Rmi,Rmiregistry,我正在使用JavaRMI编写一个简单的客户机/服务器应用程序。我想知道什么时候所有的客户端都死掉了,以便关闭服务器。在网上做了一些研究之后,我发现我可以让我的服务器实现Unreferenced接口并定义Unreferenced()方法。但这似乎不起作用,我认为这是因为服务器绑定到RMI注册表,该注册表可能包含对它的引用 有人知道当我的案子中所有客户都崩溃时,我如何得到通知吗 谢谢 我认为这是因为服务器绑定到RMI注册表,而RMI注册表 可能有参考资料 您是对的,出于DGC/未引用的目的,RMI注

我正在使用JavaRMI编写一个简单的客户机/服务器应用程序。我想知道什么时候所有的客户端都死掉了,以便关闭服务器。在网上做了一些研究之后,我发现我可以让我的服务器实现Unreferenced接口并定义Unreferenced()方法。但这似乎不起作用,我认为这是因为服务器绑定到RMI注册表,该注册表可能包含对它的引用

有人知道当我的案子中所有客户都崩溃时,我如何得到通知吗

谢谢

我认为这是因为服务器绑定到RMI注册表,而RMI注册表 可能有参考资料


您是对的,出于DGC/未引用的目的,RMI注册表也算作客户端。

那么,在我的情况下,您如何检查客户端是否崩溃?我正在使用一种变通方法,以定义的时间间隔ping它们,但在我看来,这种方法不太可靠,因为客户端应用程序可能已经崩溃,但客户端主机可能仍在运行……这是唯一的方法。除非在注册表中绑定的对象只是一种登录对象,否则它将返回未在注册表中绑定的每个客户端会话实例。调用Session.unreferenced()时,它(唯一)的客户机已经离开,因此它可以做任何它想做的事情,比如取消自身的移植。您并不真正关心登录对象是否没有客户端。客户机崩溃和客户机主机崩溃之间的区别似乎与我无关。您感兴趣的是整个系统(包括客户端)的运行状况。你的方法真是一个聪明的方法。但是我想我会坚持我的基于ping的方法来完成这个项目。“谢谢你的澄清。”简·高蒂尔:当然。会话方法还有很多其他的功能,比如根据客户机状态自动执行(如果需要)。但这是你的设计。