我只是想知道客户端是否必须知道服务器上对象的实际实现。我认为客户端只需要知道服务器上对象的接口(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/