作者sudada (叽咕叽咕叽咕)
看板java
标题[问题] RMI的一个小小问题
时间Sun Dec 14 03:29:58 2008
我有一个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