java - 客户端是否必须知道 RMI 服务器返回的对象的 Impl?

标签 java client rmi

我只是想知道客户端是否必须知道服务器上对象的实际实现。我认为客户端只需要知道服务器上对象的接口(interface)即可。

示例(在服务器端):

public class AccountImpl implements Account {
    //lots of Code
}

public class AccountManagerImpl implements AccountManager {
    public Account login() {
        return new AccountImpl();
    }
}

在客户端:

AccountManager accMan = (AccountManager) registry.lookup("accMan");

Account myAccount = accMan.login();

所以客户端有Account接口(interface)。他是否也需要知道 AccountImpl 类的实现?由于每个用户都应该获得自己的帐户,因此我认为我无法将它们导出并将其绑定(bind)到注册表...这通常是如何完成的?

提前致谢

最佳答案

没有。客户端仅使用远程接口(interface)。需要部署到客户端的类仅包括远程接口(interface)本身及其依赖的任何类,如此递归直至关闭。如果您要生成 1.5 之前的 stub ,则还需要部署它们,或者通过 RMI 代码库功能提供它们。

您不需要将帐户绑定(bind)到注册表。您在此处发布的内容已经有效。

关于java - 客户端是否必须知道 RMI 服务器返回的对象的 Impl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472181/

相关文章:

java - 如何通过 Java API 从 apache solr 获取热门术语信息

git - 是否有适用于 Mac OS X 的良好 git 客户端,它具有 Conerstone 的所有功能或 Subversion 的版本?

java - 以编程方式写入 AWS S3 - 返回 - root 帐户不能承担角色。

java - 如何在Java中进行并行编程?

java - Tomcat 中 RMI 的安全异常

java - 使用 Eclipse 调试 RMI 应用程序

java - 是否可以使用 XStream 将不同 xml 文件中的数据加载到一个 Java 类中?

java - 检查三角形是否是直角三角形

java - 递归地进行更改 : How do I modify my algorithm to print all combinations?

java - 如何为 Spark 中的 SaveAsSequenceFile 方法提供编解码器?