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

时间:2014-06-29 00:39:32

标签: java client rmi

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

示例(在服务器端):

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。他是否也需要了解AccountImpl类的实现?由于每个用户都应该拥有自己的帐户,因此我不认为我可以导出并将其绑定到注册表......这通常是如何完成的?

提前致谢

1 个答案:

答案 0 :(得分:1)

没有。客户端仅使用远程接口。需要部署到客户端的类仅包括远程接口本身及其依赖的任何类,以此类推,直到关闭。如果您正在生成1.5之前的存根,则还需要部署它们,或者通过RMI代码库功能使其可用。

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