=== RMI: Zdalny licznik ===
Interfejs
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Count extends Remote{
int getNext() throws RemoteException;
}
Implementacja serwera
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class Server extends UnicastRemoteObject implements Count {
public static int value = 0;
public Server() throws RemoteException {
super();
}
public synchronized int getNext() {
int v = value + 1;
try {
Thread.sleep(1000);
}
catch(Exception e){};
value = v;
return value;
}
public static void main(String args[]) {
try {
Server obj = new Server();
Registry r = LocateRegistry.createRegistry(6002);
r.rebind("Server", obj);
} catch (Exception e) {
System.err.println("Błąd" + e);
}
}
}
Przykład programu klienta
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
public class Client {
Count obj = null;
public int getNext() {
try {
obj = (Count) Naming.lookup("//localhost:6002/Server");
return obj.getNext();
} catch (Exception e) {
System.err.println("Błąd: " + e);
e.printStackTrace();
}
return 0;
}
public static void main(String args[]) {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
Client c1 = new Client();
System.out.println(c1.getNext());
}
}