Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RMI
RMI o Remote Method Invocation es la solucin disponible en Java para desarrollar sistemas de objetos distribuidos. El funcionamiento de esta tecnologa se resume en el siguiente grfico:
Bsqueda
Registro
Cliente
Invocacin Publicacin
Servidor
Aplicaciones Telemticas - RMI 4
RMI
Para que Servidor y Cliente se comuniquen, RMI proporciona un conjunto de mecanismos que facilitan las tareas del programador. Desde el Modelo TCP/IP:
Cliente Stub Remote Reference Transporte Internet Acceso Fsica Servidor Stub Remote Reference Transporte Internet Acceso Fsica
5
RMI: el stub
Permite a los clientes invocar mtodos de objetos remotos y recibir peticiones remotamente. Es una implementacin parcial de los objetos remotos que permite:
1. 2. Compilar los clientes sin disponer del cdigo de los objetos remotos. Abstraer al programador de los detalles de comunicacin.
Cuando la aplicacin cliente invoca un objeto definido en el stub, el stub se encarga de hacer llegar la invocacin a su destino.
Aplicaciones Telemticas - RMI 6
RMI: Implementacin
Es necesario utilizar clases de tres paquetes diferentes:
Java.rmi.*: Proporciona funcionalidad para la construccin de aplicaciones Cliente. Java.rmi.server.*: Proporciona funcionalidad para la construccin de aplicaciones Servidores. Java.rmi.registry.*: Proporciona funcionalidad para publicar y localizar un objeto remoto.
al
kit
de
10
12
13
public class HolaMundoServer { public static void main (String args [] ) { try { // Lanzamos el registro en el puerto 6789 LocateRegistry.createRegistry(6789); Registry registry = LocateRegistry.getRegistry(6789); //Creamos el objeto que queremos publicar (tiene que ser del tipo de la clase que implementa la interfaz HolaMundoImplementacion h = new HolaMundoImplementacion(); // Publicamos nuestro objeto en el registro Naming.rebind("//localhost:6789/MiNombre",h); // Mostramos que el servidor esta vivo System.out.println("Servidor Hola Mundo Furrulando"); }catch (RemoteException re) { System.out.println("Excepcion en Hola Mundo: " + re); }catch (MalformedURLException me) { System.out.println("Excepcion en Hola Mundo: " + me); } } }
14
Una vez que obtiene la referencia, utiliza el objeto como si fuese local.
15
16
A continuacin se generan el stub y el skeleton a partir de la clase Implementadora utilizando el programa rmic:
rmic classpath .\ HolaMundoImplementacion
18
Ejercicios
1. 2. Crea un nuevo mtodo en la clase que pase el mensaje interno del servidor a maysculas. Prubalo con el cliente. Desarrolle una aplicacin cliente/servidor utilizando RMI en la que se utilice un objeto remoto Calculadora que provea los siguientes mtodos: int suma (int op1, int op2): Devuelve op1+op2 int resta (int op1, int op2): Devuelve op1-op2 int divide (int op1, int op2): Devuelve op1/op2 int multiplica (int op1, int op2): Devuelve op1*op2
19