La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Objetos Distribuidos – Aplicaciones RMI

Presentaciones similares


Presentación del tema: "Objetos Distribuidos – Aplicaciones RMI"— Transcripción de la presentación:

1 Objetos Distribuidos – Aplicaciones RMI
2009 Lenguajes Visuales

2 Aplicaciones RMI Las aplicaciones RMI constan de 2 componentes: Cliente y Servidor Cliente: Utiliza servicios de objetos remotos Servidor: Ofrece públicamente uno o más servicios de un objeto (“objeto remoto”) RMI ofrece un mecanismo para que el cliente y el servidor se comuniquen entre ellos Implementa una “aplicación de objetos distribuidos” 2009 Lenguajes Visuales

3 Aplicaciones RMI Un cliente RMI debe: Un servidor RMI debe:
Localizar los objetos remotos que desea utilizar Comunicarse con dichos objetos remotos, a través de mensajes Descargar el código (bytecode) de los objetos intercambiados en el mensaje Un servidor RMI debe: Publicar los objetos que son accesibles remotamente (registro “rmiregistry”) Recibir los mensajes enviados desde el cliente, procesarlos, y enviar los resultados al cliente 2009 Lenguajes Visuales

4 Aplicaciones RMI 2009 Lenguajes Visuales

5 Desarrollo de aplicaciones RMI
Definir los métodos (servicios) que serán accesibles remotamente desde el cliente “interface remota” Implementar los objetos remotos (servidor) Proveerán la implementación del servicio Implementar los objetos clientes Utilizarán los servicios remotos 2009 Lenguajes Visuales

6 1. Interfaz Remota La interfaz remota debe incluir los métodos que serán accesibles remotamente desde los clientes Debe extender la interface Remote public interface Calculador extends Remote { int sumar (int a, int b) throws RemoteException; } 2009 Lenguajes Visuales

7 2. Implementación objeto remoto
Un objeto en el servidor debe implementar el servicio remoto Debe implementar la interface remota Debe extender UnicastRemoteObject public class ServCalculo extends UnicastRemoteObject implements Calculador { int sumar (int x, int y) { return x+y; }; } 2009 Lenguajes Visuales

8 2. Implementación objeto remoto
El servidor debe ‘registrar’ el objeto remoto, para que sea visible por el cliente (en el”rmiregistry”) public void registrar() { name = “// /calculadora”; ServCalculo sc = new ServCalculo(); Naming.rebind(name, sc); } 2009 Lenguajes Visuales

9 3. Implementación cliente
El cliente debe: Localizar el objeto remoto Utilizar un servicio ofrecido, a través del envío de un mensaje public void acceder() { name = “// /Calculadora”; Calculador c = Naming.lookup(name); int res = c.sumar(i, j); } 2009 Lenguajes Visuales

10 Ejercicio 4: Estructura clases
Interface remota (compartida entre cliente y servidor) El stub de este objeto es descargado en el cliente en runtime (desde el “codebase”) 2009 Lenguajes Visuales

11 Cómo funciona? El objeto remoto es localizado a través del registry, que indica donde está físicamente localizado tal objeto RMI pasa un “stub” remoto del objeto remoto al cliente, que actúa como un proxy o referencia remota del objeto en el servidor El stub implementa los mismos métodos públicos ofrecidos por el objeto remoto El stub realiza las conversiones de datos necesarias para el envío de los mismos al servidor. Lo mismo hace con los valores de retorno “Marshalling” / “Unmarshalling” 2009 Lenguajes Visuales

12 Pasos implementación servidor
Codificar objeto remoto Compilar objeto remoto Generar stub del objeto remoto Usar “rmic” Colocar stub e interfaces remotas en directorio accesible al cliente (o via web) El cliente descargará este código desde esta ubicación (“codebase”) Start rmiregistry Start servidor 2009 Lenguajes Visuales

13 Pasos implementación cliente
Codificar objeto cliente Compilar objeto cliente Arrancar el cliente Debe indicarse la ubicación del “codebase”, desde donde se descargará el stub del servidor Para que el cliente funcione, el servidor debe estar previamente en funcionamiento 2009 Lenguajes Visuales

14 Política de Seguridad Tanto el cliente como el servidor requieren la utilización de un archivo de seguridad, para establecer permisos “java.policy” grant { permission java.net.SocketPermission "*: ", "connect,accept"; permission java.io.FilePermission "d:\\temp\\servidor\\classes\\-", "read"; }; 2009 Lenguajes Visuales

15 Serializable Si un servicio acepta parámetros de tipos no primitivos, éstos deben ser de tipo Serializable public interface Calculador extends Remote { public int sumar (Articulo x, Articulo y) throws RemoteException; } public interface Articulo extends Serializable { 2009 Lenguajes Visuales

16 Ejercicio 5: RMI & Serializable
Interface remota (compartida entre cliente y servidor) Esta clase es necesaria en el servidor, para ejecutar suma(). Es descargada dinámicamente desde el cliente 2009 Lenguajes Visuales

17 Aplicación MVC de 2 capas
Una aplicación MVC de 2 capas consta de: Servidor: modelo Cliente: vista y controlador En el cliente debe incorporarse un objeto que “representa” (proxy) al modelo, y se encarga de efectuar la conexión con el servido Patrón de diseño “BusinessDelegate” 2009 Lenguajes Visuales

18 Ejercicio 6 - Cliente 2009 Lenguajes Visuales

19 Ejercicio 6 - Servidor 2009 Lenguajes Visuales

20 Tutorial de Java (Sección sobre RMI)
Referencias Tutorial de Java (Sección sobre RMI) Disponible en java.sun.com Patrones J2EE (información acerca de Business Delegate) Artículos: “Creating 3-Tier Distributed Applications with RMI” ( “Improved Observer/Observable” ( 2009 Lenguajes Visuales


Descargar ppt "Objetos Distribuidos – Aplicaciones RMI"

Presentaciones similares


Anuncios Google