Get it on Google Play

Exemple RMI

10-05-2007
 

Ja he comentat en algun altre POST sobre RMI. Simplement, una tecnologia desenvolupada per Java per a desenvolupar aplicacions distribuïdes.

Aquí un exemple de codi:

Interfície del Servidor: IMaster.java

public interface IMaster extends java.rmi.Remote {

public void put(String clau, String valor) throws java.rmi.RemoteException;
public String get(String clau) throws java.rmi.RemoteException;

}

Implementació del Servidor: Master.java

public class Master extends java.rmi.server.UnicastRemoteObject implements IMaster {
private Hashtable dades=new Hashtable();

public Master() throws java.rmi.RemoteException {
super();
}

public void put(String clau, String valor) throws java.rmi.RemoteException {
dades.put(clau,valor);
}

public String get(String clau) throws java.rmi.RemoteException {
return “”+dades.get( clau );
}
}

Classe que posa en el servidor de noms la instancia del Servidor: MasterServer.java

public class MasterServer {

public MasterServer() { // El metodo constructor
try {
IMaster c = new Master();
Naming.rebind(“rmi://localhost:1099/MasterServer”, c);
System.out.println(“Instanciat Master!!!!”);
} catch (Exception e) { System.out.println(“Problema: ” + e); }
}

public static void main(String args[]) {
new MasterServer();
}
}

Classe Clienta que crida la classe Servidora: Slave.java

public class Slave {

public Slave() throws java.rmi.RemoteException {
super();

try {
IMaster server = (IMaster) Naming.lookup(“rmi://localhost:1099/MasterServer”);
} catch (Exception ex) { ex.printStackTrace(); }
}
}

Atenció, per a executar això:

// Generem els stub/skeletons del Servidor
/jdk1.5.0_09/bin/rmic Master

// Executem el servidor de noms (en el servidor!!!!)
/jdk1.5.0_09/bin/rmiregistry

//Executem el servidor
/jdk1.5.0_09/bin/java MasterServer

//Executem el client
/jdk1.5.0_09/bin/java Client

En les últimes versions de Java ja no cal generar ni stubs ni skeletons.

Leave a Reply