Java RMI - PowerPoint PPT Presentation

About This Presentation
Title:

Java RMI

Description:

Java RMI Sistemas distribuidos Mar a de los Santos P rez Hern ndez mperez_at_fi.upm.es Entornos orientados a objetos Tendencia actual hacia sistemas compuestos por un ... – PowerPoint PPT presentation

Number of Views:176
Avg rating:3.0/5.0
Slides: 29
Provided by: F197
Category:
Tags: rmi | java | metodo

less

Transcript and Presenter's Notes

Title: Java RMI


1
Java RMI
  • Sistemas distribuidos
  • María de los Santos Pérez Hernández
  • mperez_at_fi.upm.es

2
Entornos orientados a objetos
  • Tendencia actual hacia sistemas compuestos por un
    conjunto de objetos que interactúan entre sí.
  • Un programa solicita servicios invocando los
    métodos que ofrece un objeto.
  • La invocación de métodos se ve como un paso de
    mensajes.

3
Entornos orientados a objetos
op1
DATOS
op2
Implementación de métodos (op1, op2, ..., opN)
opN
4
Entornos orientados a objetos
  • Comunicación entre objetos Mensajes.
  • Encapsulación.
  • Identidad del objeto (Identificación).
  • Herencia.
  • Acciones.
  • Clases.
  • Instancias.
  • Interfaces vs implementaciones.
  • Herencia múltiple.
  • Enlace dinámico.
  • Recolección de basura.

5
Enlace dinámico
  • Shape aShape
  • ShapeList aList
  • int n aList -gtnumberElements()
  • for (int i1 iltn i)
  • aShape aList -gt nthELement()
  • cout ltlt Perimeter ltlt aShape-gtperimeter() ltlt
    \n

6
Modelo de objetos
7
Modelo de objetos en sistemas distribuidos
8
Modelo de objetos en sistemas distribuidos
  • Sistemas distribuidos.
  • Aplicaciones inherentemente distribuidas.
  • Se caracterizan por su complejidad.
  • Sistemas orientados a objetos.
  • Más cercanos al lenguaje natural.
  • Facilitan el diseño y la programación.

9
Modelo de objetos en sistemas distribuidos
  • ANSA (1989-1991) fue el primer proyecto que
    intentó desarrollar una tecnología para modelizar
    sistemas distribuidos complejos
  • Utilizaba un diseño orientado a objetos
  • Estándares
  • RMI invocación de métodos remotos de Java
  • CORBA expande DCE con servicios orientados a
    objetos
  • DCOM versión CORBA de Microsoft

10
Modelo de objetos en sistemas distribuidos
  • ROID Remote Object IDentifier.
  • Java RMI ObjID.
  • Localización de objetos.
  • Servicio de nombres.
  • Control de concurrencia.
  • Transacciones.
  • Protección de objetos.
  • Recolección de basura de objetos remotos.

11
Invocación de métodos remotos (RMI)
  • Comunicación cliente/servidor gt RPC.
  • Sistemas distribuidos basados en objetos gt RMI
    (Remote method invocation).
  • RMI Acción de invocar un método de un interfaz
    remoto en un objeto remoto.
  • RMI ofrece
  • Mecanismos para crear servidores y objetos cuyos
    métodos se puedan invocar remotamente.
  • Mecanismos que permiten a los clientes localizar
    los objetos remotos.

12
Invocación de métodos remotos en Java
  • Java RMI
  • El soporte para RMI en Java está basado en las
    interfaces y clases definidas en los paquetes
    java.rmi y java.rmi.server
  • Características de Java RMI
  • No requiere un IDL (Interface Definition
    Language).
  • La transferencia de objetos de tipos de datos
    complejos se lleva a cabo mediante mecanismos de
    serialización.
  • Es necesario tratar mayor número de excepciones
    que en el caso de invocación de métodos locales.

13
Invocación de métodos remotos en Java
  • Localización de objetos remotos
  • Servidor de nombres java.rmi.Naming
  • Ejemplo
  • BankAccount acct new BankAccountImpl()
  • String url rmi//java.Sun.COM/account
  • // enlazamos una url a un objeto remoto
  • java.rmi.Naming.bind(url, acct)
  • ....
  • // búsqueda de la cuenta
  • acct (BankAccount) java.rmi.Naming.lookup(url)

14
Arquitectura de Java RMI
15
Arquitectura de Java RMI
  • Nivel de transporte se encarga de las
    comunicaciones y de establecer las conexiones
    necesarias
  • Nivel de gestión de referencias remotas trata
    los aspectos relacionados con el comportamiento
    esperado de las referencias remotas (mecanismos
    de recuperación, etc.)
  • Nivel de resguardo/esqueleto (proxy/skeleton) que
    se encarga del aplanamiento (serialización) de
    los parámetros
  • proxy resguardo local. Cuando un cliente realiza
    una invocación remota, en realidad hace una
    invocación de un método del resguardo local.
  • Esqueleto (skeleton) recibe las peticiones de
    los clientes, realiza la invocación del método y
    devuelve los resultados.

16
Cómo escribir aplicaciones con Java RMI?
17
Ejemplo
18
Modelización de la interfaz remota (Sumador)
  • public interface Sumador extends java.rmi.Remote
  • public int sumar(int a, int b)
  • throws java.rmi.RemoteException

19
Clase que implementa la interfaz (SumadorImpl)
  • import java.rmi.
  • import java.rmi.server.UnicastRemoteObject
  • public class SumadorImpl extends
    UnicastRemoteObject implements Sumador
  • public SumadorImpl(String name) throws
    RemoteException
  • super()
  • try
  • System.out.println("Rebind Object " name)
  • Naming.rebind(name, this)
  • catch (Exception e)
  • System.out.println("Exception "
    e.getMessage())
  • e.printStackTrace()
  • public int sumar (int a, int b) throws
    RemoteException
  • return a b

20
Código del servidor (SumadorServer)
  • import java.rmi.
  • import java.rmi.server.
  • public class SumadorServer
  • public static void main (String args)
  • try
  • SumadorImpl misuma new
  • SumadorImpl("MiSumador")
  • catch(Exception e)
  • System.err.println("System exception" e)

21
Registro del servicio
  • Antes de arrancar el cliente y el servidor, se
    debe arrancar el programa rmiregistry en el
    servidor para el servicio de nombres. El puerto
    que utiliza el rmiregistry por defecto es el
    1099.
  • rmiregistry port_number
  • El método rebind es utilizado normalmente en
    lugar del método bind, porque garantiza que si un
    objeto rémoto se registró previamente con dicho
    nombre, el nuevo objeto reemplazará al antiguo.

22
Código en el cliente (SumadorClient)
  • import java.rmi.registry.
  • import java.rmi.server.
  • public class SumadorClient
  • public static void main(String args)
  • int res 0
  • try
  • System.out.println("Buscando Objeto ")
  • Sumador misuma (Sumador)Naming.lookup("rmi
    //" args0 "/" "MiSumador")
  • res misuma.sumar(5, 2)
  • System.out.println("5 2 " res)
  • catch(Exception e)
  • System.err.println(" System exception")
  • System.exit(0)

23
Búsqueda
  • Cualquier programa que quiera instanciar un
    objeto remoto debe realizar una búsqueda de la
    siguiente forma
  • Sumador misuma (Sumador)Naming.lookup("
    rmi//" args0 "/" "MiSumador")
  • El método lookup devuelve una referencia remota a
    un objeto que implementa la interfaz remota.
  • El método lookup interactúa con rmiregistry.

24
Pasos
  • Java RMI
  • Enlace a un nombre bind(), rebind()
  • Encontrar un objeto y obtener su referencia
    lookup()
  • refObj.nombre_met()

25
Cuadro general
Cliente
Servidor
op1 op2 opN
Stub
Skeleton
Red
26
Cómo se ejecuta?
  • Compilación
  • javac Sumador.java
  • javac SumadorImpl.java
  • javac SumadorClient.java
  • javac SumadorServer.java
  • Generación de los esqueletos
  • rmic SumadorImpl
  • Ejecución del programa de registro de RMI
  • rmiregistry
  • Ejecución del servidor
  • java SumadorServer
  • Ejecución del cliente
  • java SumadorCliente lthost-del-servidorgt

27
Java RMI vs CORBA
  • Java RMI es más sencillo
  • Trata sólo con objetos Java.
  • Java RMI permite pasar por valor cualquier objeto
    que se pueda serializar.
  • CORBA es más flexible
  • Proporciona soporte RMI de objetos implementados
    en diversos lenguajes y clientes escritos también
    en distintos lenguajes.
  • CORBA añade bastante complejidad.

28
Referencias bibliográficas
  • Distributed Systems. Concepts and Design. 2º
    edición
  • G. Coulouris, J. Dollimore, T. Kindberg.
  • Addison-Wesley, 1994
  • http//www.dcs.qmw.ac.uk/research/distrib/book.htm
    l
  • Información on-line de Sun (Remote Method
    Invocation Specification)
  • http//java.sun.com/products/jdk/1.1/docs/guide/rm
    i/spec/rmiTOC.doc.html
  • Distributed Operating Systems
  • A. S. Tanenbaum
  • Prentice-Hall, 1995
Write a Comment
User Comments (0)
About PowerShow.com