RMI en 5 minutos
Para este ejemplo estoy usando Ubuntu 9.10 y JDK1.6
Es importante tambien tener definidas la variable de entorno JAVA_HOME
La exposición de los métodos remotos se da por medio de Interfaces, por eso para este ejemplo vamos a seguir el siguiente orden
Creamos una Interface
Implementamos esa interface en una clase
Creamos los Stubs y Skeletons
Creamos un servidor
Creamos un cliente
Habilitamos el registro RMI
Ejecutamos el servidor
Ejecutamos el cliente
Creación de la interface:
Como sabemos en una interface definimos nombre de métodos que serán luego implementados por alguna clase
Esta interface utiliza Remote y RemoteException que se encuentran dentro del paquete java.rmi
import java.rmi.*;
public interface MensajeInterface extends Remote{
public String saludar() throws RemoteException;
}
Implementación de MensajeInterface en la clase Mensaje:
Creamos una clase llamada Mensaje, que tendrá una variable miembro llamada cadena, un constructor que inicializa esta variable e implementamos la función saludar. Además esta clase debe extender la clase UnicastRemoteObject, para que tenga funcionalidad remota.
import java.rmi.*;
import java.rmi.server.*;
public class Mensaje extends UnicastRemoteObject implements MensajeInterface{
private String cadena;
public Mensaje(String cadena) throws RemoteException{
this.cadena=cadena;
}
public String saludar() throws RemoteException{
return "el mensaje ingresado fue:"+cadena;
}
}
Creación de Stubs y Skeletons:
Compilamos las clases anteriores por medio del comando javac. Una vez hecho esto ejecutamos el comando “rmic Mensaje” para la generación de Stubs y Skeletons.
Creación de un Servidor:
Esta clase hace que el Servidor se ejecute y espere alguna conexión remota. Cuando algún cliente se conecte a este servidor recibirá un mensaje.
import java.rmi.Naming;
public class Server{
public static void main(String ... args){
try{
Naming.rebind("Mensaje",new Mensaje("Esta es una prueba de RMI :)"));
System.out.println("El servidor se encuentra listo para su uso");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Creamos una clase Cliente:
Para mi caso, la clase Mensaje, se encuentra en la dirección 192.168.0.100, por eso usamos Naming lookup, que nos sirve para buscar una clase en una localización remota.
import java.rmi.Naming;
public class Cliente{
public static void main(String ... args){
try{
MensajeInterface mensaje=(MensajeInterface)Naming.lookup("//192.168.0.100/Mensaje");
System.out.println(mensaje.saludar());
}catch(Exception e){
e.printStackTrace();
}
}
}
Compilamos las clases Servidor y Cliente por medio del comando javac.
Registro RMI
Luego desde un terminal habilitamos el registro rmi, por medio del comando rmiregistry & (el caracter & se usa para ejecutar rmiregistry en background).
Ejecución del Servidor
Ejecutamos el servidor por medio de “java Server“ y obtenemos el mensaje:
“El servidor se encuentra listo para su uso”
Ejecución del Cliente
Ejecutamos el cliente por medio de “java Cliente” y obtenemos la salida
“el mensaje ingresado fue:Esta es una prueba de RMI :)”
No hay comentarios:
Publicar un comentario