1 服务端远程接口
public interface RMITest2I extends Remote {
public void registerClient(RMITest2ClientI client)throws RemoteException;
public void unregisterClient(RMITest2ClientI client)throws RemoteException;
}
2服务端实现
public class RMITest2 extends UnicastRemoteObject implements RMITest2I,Runnable {
private HashSet client;
public RMITest2()throws RemoteException {
client=new HashSet();
}
public void registerClient(RMITest2ClientI client) throws RemoteException {
this.client.add(client);
}
public void unregisterClient(RMITest2ClientI client) throws RemoteException {
this .client.remove(client);
}
public void run() {
for(;;){
Iterator iter=client.iterator();
while(iter.hasNext()){
RMITest2ClientI client=(RMITest2ClientI) iter.next();
try {
client.getPerfectTime();
} catch (Exception e) {
System.out.println("移出无效对象");
iter.remove();
}
try {
Thread.sleep(1000);
} catch (Exception e) {
}
}
}
}
public static void main(String[] args) {
try {
if(System.getSecurityManager()==null){
System.setSecurityManager(new SecurityManager());
}
RMITest2 rt=new RMITest2();
Naming.bind("localhost/RMITest2", rt);
System.out.println("bind OK");
new Thread(rt).start();
} catch (Exception e) {
e.printStackTrace();
}
}
3 客户端接口
public interface RMITest2ClientI extends Remote{
public void getPerfectTime()throws RemoteException;
}