![Page 1: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/1.jpg)
Java RMI
Sistemas distribuidos
![Page 2: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/2.jpg)
Sistemas Distribuidos 1
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.
![Page 3: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/3.jpg)
Sistemas Distribuidos 2
Entornos orientados a objetos
DATOS
Implementación de
métodos
(op1, op2, ..., opN)
op1
op2
opN
![Page 4: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/4.jpg)
Sistemas Distribuidos 3
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.
![Page 5: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/5.jpg)
Sistemas Distribuidos 4
Enlace dinámico
Shape *aShape;
ShapeList *aList;
int n = aList ->numberElements();
for (int i=1; i<=n; i++) {
aShape = aList -> nthELement();
cout << “Perimeter:” << aShape->perimeter() << “\n”;
}
![Page 6: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/6.jpg)
Sistemas Distribuidos 5
Modelo de objetos
![Page 7: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/7.jpg)
Sistemas Distribuidos 6
Modelo de objetos en sistemas distribuidos
Máquina A Máquina B Máquina C
![Page 8: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/8.jpg)
Sistemas Distribuidos 7
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.
![Page 9: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/9.jpg)
Sistemas Distribuidos 8
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
![Page 10: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/10.jpg)
Sistemas Distribuidos 9
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.
![Page 11: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/11.jpg)
Sistemas Distribuidos 10
Invocación de métodos remotos (RMI)
• Comunicación cliente/servidor => RPC.
• Sistemas distribuidos basados en objetos => 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.
![Page 12: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/12.jpg)
Sistemas Distribuidos 11
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.
![Page 13: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/13.jpg)
Sistemas Distribuidos 12
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);
![Page 14: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/14.jpg)
Sistemas Distribuidos 13
Arquitectura de Java RMI
![Page 15: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/15.jpg)
Sistemas Distribuidos 14
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.
![Page 16: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/16.jpg)
Sistemas Distribuidos 15
¿Cómo escribir aplicaciones con Java RMI?
Definición de la interfaz remota
javac
(.java)
1
2
3
4
10
9
5
6
7
8
(.java)
usaCliente
EjectuarCliente
(.class)
CLIENTE SERVIDOR
(.class)
Esqueleto(.class)
Implementación de la interfaz remota
Esqueleto(.class)
Servidor (.class)
Arrancar RMIRegistry
Crear los objetos
Registrar los objetos
javac
rmic
![Page 17: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/17.jpg)
Sistemas Distribuidos 16
Ejemplo
![Page 18: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/18.jpg)
Sistemas Distribuidos 17
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;
}
![Page 19: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/19.jpg)
Sistemas Distribuidos 18
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;
}
}
![Page 20: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/20.jpg)
Sistemas Distribuidos 19
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);
}
}
}
![Page 21: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/21.jpg)
Sistemas Distribuidos 20
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.
![Page 22: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/22.jpg)
Sistemas Distribuidos 21
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://" + args[0] +
"/" +"MiSumador");
res = misuma.sumar(5, 2);
System.out.println("5 + 2 = " + res);
}
catch(Exception e){
System.err.println(" System exception"); }
System.exit(0);
}
}
![Page 23: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/23.jpg)
Sistemas Distribuidos 22
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://" + args[0] + "/"
+"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.
![Page 24: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/24.jpg)
Sistemas Distribuidos 23
Pasos
• Java RMI:– Enlace a un nombre: bind(), rebind()
– Encontrar un objeto y obtener su referencia: lookup()
– refObj.nombre_met()
![Page 25: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/25.jpg)
Sistemas Distribuidos 24
Cuadro general
Cliente Servidor
Stub Skeleton
Red
op1
op2
opN
![Page 26: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/26.jpg)
Sistemas Distribuidos 25
¿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 <host-del-servidor>
![Page 27: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/27.jpg)
Sistemas Distribuidos 26
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.
![Page 28: Java RMI - Hosting Miarrobaemiso.webcindario.com/SD/javaRMI.pdf · Entornos orientados a objetos • Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan](https://reader030.vdocumento.com/reader030/viewer/2022041005/5eaade2d6c92fe10d62262b1/html5/thumbnails/28.jpg)
Sistemas Distribuidos 27
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.html
• Información on-line de Sun (Remote Method Invocation Specification):http://java.sun.com/products/jdk/1.1/docs/guide/rmi/spec/rmiT
OC.doc.html
• Distributed Operating SystemsA. S. TanenbaumPrentice-Hall, 1995