Java 基于RMI的带回调的注册程序

Java 基于RMI的带回调的注册程序,java,callback,rmi,Java,Callback,Rmi,我必须制定一个符合以下要求的计划: 基于RMI构建具有以下特征的客户机/服务器应用程序: 该应用程序分为三个不同的项目:服务器、客户端、共享,其中共享包含服务器和客户端通用的接口和类。服务器和客户机是程序,每个程序都有自己的主程序,它们也应该在不同的机器上工作 服务器为注册导出远程对象 客户机使用服务器的适当方法在服务器上注册,该方法将客户机的名称和IP作为参数,并返回唯一标识符 服务器保存所有已注册客户机的更新列表,并为他们提供注册和访问列表的方法 制作一个分布式程序,用于模拟随机数个客户端的

我必须制定一个符合以下要求的计划:

基于RMI构建具有以下特征的客户机/服务器应用程序: 该应用程序分为三个不同的项目:服务器、客户端、共享,其中共享包含服务器和客户端通用的接口和类。服务器和客户机是程序,每个程序都有自己的主程序,它们也应该在不同的机器上工作

  • 服务器为注册导出远程对象
  • 客户机使用服务器的适当方法在服务器上注册,该方法将客户机的名称和IP作为参数,并返回唯一标识符
  • 服务器保存所有已注册客户机的更新列表,并为他们提供注册和访问列表的方法
  • 制作一个分布式程序,用于模拟随机数个客户端的注册。 客户机是一个Java程序,它连接到服务器,进行注册,然后允许可视化系统的全局状态

    使用RMI回调通知每个注册的客户机新注册

    我的问题从第二点开始。到目前为止,在我看到的所有教程中,客户机创建了一个导出的对象客户机,并将其传递给服务器导出的远程对象的注册方法。在这里,它要求我只传递名称和IP,但为了进行回调,我需要一个对客户端对象的引用,所以我想在注册表中查找每个注册的客户端,但我认为这只是一个解决方法,因为我可以直接将客户端对象作为参数传递给方法

    注册后,我认为客户机应该使用其标识符访问已注册客户机的列表,但如果另一个未注册的客户机使用与已注册客户机的标识符匹配的自制标识符,该怎么办?在这种情况下,它可以访问该帐户。有没有一种方法可以安全地识别客户机,并让他们保持登录,而不要求他们为每个请求标识自己

    可选问题:如何将注册表与此类程序一起使用?我们如何知道每个客户机将要将一个名称绑定到其对象而不覆盖另一个名称?例如,如果注册表中有一个名为“client1”的对象,则可能有另一个将其对象命名为“client1”的客户端覆盖了第一个对象;在这种情况下,第一个对象的名称会发生什么变化?同样,在知道这可能发生的情况下,如何使用注册表


    我为我的英语道歉,但它不是我的主要语言

    服务器应该为客户端创建令牌。客户端应在所有后续调用中传递它。服务器应该使用它进行身份验证

    GUID很难伪造

    您不能阻止客户机这样做,但如果有足够复杂的标识符,这将很困难


    您还可以让用户提供凭据(例如用户名和密码)。

    谢谢您的回答。不幸的是,我仍然不明白,如果客户端只传递一个passess name,而IPClient必须传递更多,服务器如何保持对客户端的引用。凭据或标识令牌。在他们继续之前,需要充注泵并获得令牌。