Professional Documents
Culture Documents
Arquitectura de
Tecnologas orientadas al desarrollo
aplicaciones
distribuidas
de aplicaciones distribuidas.
La invocacin remota de mtodos
(RMI).
Bibliografa
Tipos de arquitecturas
de la traduccin de servicios,
controlar los accesos al servidor y
enrutar las peticiones a distintos servidores
en funcin de algunas caractersticas.
3
Objetos distribuidos
los
objetos
dinmicamente
asumen el papel de clientes o
servidores, segn la necesidad.
Un objeto distribuido es un objeto
que
puede
ser
accedido
remotamente
desde
cualquier
lugar en la red, del mismo modo
que se hara si estuviese en la
misma mquina.
4
Objetos distribuidos
Los
objetos
distribuidos
estarn
"unidos" mediante algn mecanismo
que permita saber a los clientes:
Por
ejemplo,
una
especie
de
gestionador de peticiones de objetos
podra servirnos para esta tarea o bien
algn tipo de registro general dinmico.
Objetos distribuidos
Objetos distribuidos
Tecnologas
10
Tecnologas
11
Tecnologas
Introduccin
Introduccin
14
Introduccin
15
Introduccin
El uso de RMI, entre otras cosas, aporta:
16
Estrategia
Arquitectura RMI
Servicio directorios
objeto
cliente
Objeto
servidor
stub
skeleton
Capa transporte
Capa transporte
18
Interacciones stub
stub
mtodo
remoto
stub
tiempo
Empaquetado parmetros
Llamada a mtodoEnva peticin
Desempaquetado:
Invoca mtodo
executa codigo
Recibe retorno
empaqueta
enva
desempaqueta
Retorna valor
19
Ejemplo cliente/servidor
Cliente y servidor
import java.rmi.*;
interface HoraExactaI extends
Remote {
long obtenerHora() throws
RemoteException;
}
21
Servidor
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;
public class HoraExacta extends UnicastRemoteObject
implements HoraExactaI {
// Implementacin de la interface:
public long obtenerHora() throws RemoteException {
return System.currentTimeMillis();
}
// Implementacin del constructor para lanzar
//RemoteException:
public HoraExacta() throws RemoteException {
super();
}
22
Cliente
24
Arrancar el registro
En nuestro caso hay una llamada a
Naming.bind(), que requiere que el
registro est ya ejecutndose como
un proceso a parte en nuestro
sistema.
El nombre del proceso que se encarga
de hacer el registro es rmiregistry y
en funcin del sistema en el que
estemos lo arrancaremos como:
26
Arrancar el registro
Arrancar el registro
Si en un mismo registro
tuvisemos dos servicios con el
mismo nombre se lanzara la
excepcin
AlreadyBoundException.
Arrancar el registro
29
Arrancar el registro
30
Creacin de stubs
Creacin de stubs y
skeletons
El resultado ser una clase, que
tendr que tener el cliente y el
servidor:
HoraExacta_Stub.class
32
33