[問題] RMI的一個小小問題
我有一個RMI程式
在server端
Account這個class是存放多個使用者自行輸入的物件
然後存放到一個vector物件裡
這個vector我放在RMI的implement裡面
再rebind 這個vector 物件
在Account這個物件裡面 我有一個更動裡面的值的method 稱作purchase好了
問題在這裡
我的client的程式中間有一段無窮迴圈
可以讓使用者無限次數的輸入指令存取資料
如果我的lookup指令在迴圈裡面
而且直接呼叫purchase去改server端的值的話
while(true){
RMIInterface temp = (RMIInterface)Naming.lookup("rmi://" + HOST +
"/Accounts");
Vector<Account> acctDetails = temp.getPurchaseAccounts();
Account acct = acctDetails.elementAt(1);
acct.purchase(1)
}
這種情形我的迴圈每跑一次lookup他的值就會復原
所以在client端看起來資料都不會變
但是把lookup指令丟到迴圈外面以後就好了
可是當client的程式重新開啟以後(server還在)
他的值還是會復原
後來我把程式改了一下
在client端先呼叫server的implement class
再由implement class呼叫purchase這個method
變成我的lookup必須丟在迴圈外面
也就是要重新lookup
client才會接到新的資料
但是這樣只要server不重開
我的client也不會reset
這樣好像比較接近題意
但是有點搞不太清楚為什麼會這樣
麻煩各位解惑了 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.161.211.192
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):