0
我只是想知道客戶端是否必須知道服務器上對象的實際實現。我認爲客戶端只需要知道服務器上對象的接口。客戶端是否必須知道RMI服務器返回的對象的Impl?
(服務器側)實施例:
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();
所以客戶端具有的界面帳戶。他是否也需要知道類AccountImpl的實現?由於每個用戶都應該擁有自己的帳戶,我不認爲我可以導出並將其綁定到註冊表中......通常如何完成此操作?
在此先感謝
我得到以下錯誤在客戶端: 線程「主」異常java.rmi.UnmarshalException:錯誤解組返回; 對我來說,這聽起來像客戶需要AccountImpl。我怎樣才能解決這個問題? – KrawallKurt
立即工作。 AccountImpl實現帳戶,可序列化 – KrawallKurt
這可能不是你想要的。你幾乎肯定希望Account是一個遠程對象。否則,客戶端對它所做的任何更改都將丟失,並且客戶端不會看到服務器發生的對其發生的併發更改。 – EJP