22

POO II - en java

Embed Size (px)

DESCRIPTION

poo2 en java

Citation preview

Page 1: POO II - en java
Page 2: POO II - en java

PROGRAMACION  ORIENTADA  A  OBJETOS  II  CÓD.  11.55.305  

https://sites.google.com/a/ufps.edu.co/borisperezg

Page 3: POO II - en java

   

UNIDAD  7:  REMOTE  METHOD  INVOCATION  

•  Definición  •  Servidor  RMI  •  Cliente  RMI  •  Ejemplos  

Page 4: POO II - en java

   

Obje;vo:  hacer  que  el  soAware  distribuido  se  programe  igual  que  una  aplicación  no  distribuida.  

 

Mediante  el  modelo  RPC  la  comunicación  se  realiza  conceptualmente  igual  que  la  invocación  de  

un  procedimiento  local.

UNIDAD  7:  RMI  

INTRODUCCIÓN  

Page 5: POO II - en java

   

Pasos:  

•  A  llama  al  procedimiento  remoto  de  B  

•  La  llamada  dispara  una  acción  de  un  procedimiento  de  B  

•  Al  finalizar  el  procedimiento,  B  devuelve  el  valor  a  A  

 

Simplifica  la  comunicación  entre  procesos  y  la  sincronización  de  eventos.  

 

Ejemplos:    

 

•  Open  Network  Compu;ng  Remote  Procedure  Call,  desarrollada  a  par;r  del  API  RPC  de  Sun  

Microsystems  a  comienzo  de  los  años  80  

•  Distributed  Compu;ng  Environment  (DCE)  RPC  de  Open  Group  

•  Simple  objeto  Access  Protocol  (SOAP)  

INTRODUCCIÓN  

UNIDAD  7:  RMI  

Page 6: POO II - en java

   

Primera  aproximación  al  uso  de  un  modelo  orientado  a  objetos  sobre  aplicaciones  distribuidas  

 

Objetos  distribuidos  dentro  de  una  red.  

•  Los  objetos  proporcionan  métodos,  los  cuales  dan  acceso  a  los  servicios  

 

Ejemplo:  

 

Remote  method  invoca;on  (RMI)  de  Java

INTRODUCCIÓN  

UNIDAD  7:  RMI  

Page 7: POO II - en java

   

El  mecanismo  RMI   (Remote  Method   Invoca;on)  permite  que  una  aplicación  se  comunique  con  

objetos  que  residen  en  programas  que  se  ejecutan  en  máquinas  remotas.  En  esencia,  en  lugar  de  

crear   un   objeto,   el   programador   enlaza   el   objeto   remoto   con   un   objeto   local,   conocido   como  

stub.    

 

Los  mensajes  dirigidos  al  objeto  remoto  se  envían  al  stub   local,  como  si   fuera  el  objeto  real.  El  

stub  acepta  los  mensajes  que  se  le  envíen,  y  a  su  vez,  los  envía  al  objeto  remoto,  el  cual  invoca  

sus  métodos  apropiados.   El   resultado  de   la   invocación  de   los  métodos  en  el   objeto   remoto   se  

envía  de  regreso  al  stub  local,  que  los  remite  al  emisor  original  de  la  llamada.  

 

Aparte   de   enlazar   el   stub   con   el   objeto   remoto,   el   código   escrito   por   el   programador   para  

comunicar  con  el  objeto  remoto  es  igual  al  código  que  se  u;lizaría  si  el  objeto  se  encontrara  en  

una  aplicación  local.

INTRODUCCIÓN  

UNIDAD  7:  RMI  

Page 8: POO II - en java

   

INTRODUCCIÓN  

A  con;nuación  se  muestra  una  aplicación  cliente  ejecutándose  en  una  máquina  A,  que  envía  un  

mensaje  a  un  objeto  remoto  en  una  aplicación  servidor  que  se  ejecuta  en  una  máquina  B.  

 

Cuando   la   aplicación   cliente   envía   un  mensaje   al   stub   local   del   objeto   remoto,   la   pe;ción   se  

transmite   a   la  máquina   que   con;ene   al   objeto   real,   donde   el  método   es   invocado   y   cualquier  

resultado   es   retornado   al   stub   local,   de   modo   que   la   aplicación   cliente   puede   obtener   la  

respuesta  apropiada.

UNIDAD  7:  RMI  

Page 9: POO II - en java

   

INTRODUCCIÓN  

UNIDAD  7:  RMI  

Page 10: POO II - en java

   

INTRODUCCIÓN  

El   soporte   para   RMI   en   Java   está   basado   en   las   interfaces   y   clases   definidas   en   los   paquetes  

java.rmi  y  java.rmi.server.  

 

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.  

 

Servicio  de  directorios:  

 

•  rmiregistry,  servicio  de  directorios  de  Java  

•  Se  ejecuta  en  la  máquina  servidor  objeto  

UNIDAD  7:  RMI  

Page 11: POO II - en java

   

INTRODUCCIÓN  

Comparación  RMI  y  sockets  

 

Ventajas:  

 

•  Los  programas  RMI  son  más  sencillos  de  diseñar  

•  Servidor  RMI  concurrente  

 

Inconvenientes:  

 

•  Sockets  ;enen  menos  sobrecarga  

•  RMI  sólo  para  plataformas  Java  

UNIDAD  7:  RMI  

Page 12: POO II - en java

   

INTRODUCCIÓN  

La  clase  java.rmi.Naming  

 

La   clase   Naming   con;ene   los   siguientes   métodos   está;cos   que   permiten   el   acceso   a   objetos  

remotos  u;lizando  un  URL  para  especificar  el  nombre  y  lugar  del  objeto  remoto.

UNIDAD  7:  RMI  

Page 13: POO II - en java

   

INTRODUCCIÓN  

La  clase  java.rmi.Naming  

 

El  URL  se  presenta  en  la  forma  rmi://host:port/objectName,  donde:

UNIDAD  7:  RMI  

Page 14: POO II - en java

   

ARQUITECTURA  RMI  

UNIDAD  7:  RMI  

Page 15: POO II - en java

   

ARQUITECTURA  RMI  

Nivel  de  resguardo  o  stub  

•  Se  encarga  del  aplanamiento  de  los  parámetros.  

•  Stub:  resguardo  local.  Cuando  un  cliente  realiza  una  invocación  remota,  en  realidad  hace  una  

invocación  de  un  método  del  resguardo  local.  

 

Nivel  de  gesSón  de  referencias  remotas  

•  Interpreta  y  ges;ona  las  referencias  a  objetos  remotos.  

•  Invoca  operaciones  de  la  capa  de  transporte.    

 

Nivel  de  transporte  

•  Se  encarga  de  las  comunicaciones  y  de  establecer  las  conexiones  necesarias.  

•  Basada  en  protocolo  TCP  

UNIDAD  7:  RMI  

Page 16: POO II - en java

   

SERVIDOR  RMI  

UNIDAD  7:  RMI  

Page 17: POO II - en java

   

SERVIDOR  RMI  

Interface  

 

 

 

 

 

 

The  Remote   interface   serves   to   iden;fy   interfaces  whose  methods  may  be   invoked   from  a  non-­‐local   virtual  

machine.  Any  object   that   is   a   remote  object  must  directly  or   indirectly   implement   this   interface.  Only   those  

methods  specified  in  a  "remote  interface",  an  interface  that  extends  java.rmi.Remote  are  available  remotely.  

ImplementaSon   classes   can   implement   any   number   of   remote   interfaces   and   can   extend   other   remote  

implementa;on   classes.   RMI   provides   some   convenience   classes   that   remote   object   implementa;ons   can  

extend   which   facilitate   remote   object   crea;on.   These   classes   are   java.rmi.server.UnicastRemoteObject   and  

java.rmi.ac;va;on.Ac;vatable.  

UNIDAD  7:  RMI  

Page 18: POO II - en java

   

SERVIDOR  RMI  

Server  

UNIDAD  7:  RMI  

Page 19: POO II - en java

   

SERVIDOR  RMI  

Server  

 

Registry   is   a   remote   interface   to   a   simple   remote   object   registry   that   provides   methods   for  

storing  and  retrieving  remote  object  references  bound  with  arbitrary  string  names.    

 

Registry  enables  RMI  client  bootstrapping:   it  provides  a   simple  means   for  a   client   to  obtain  an  

ini;al  reference  to  a  remote  object.    

 

The  LocateRegistry  class  provides  a  programma;c  API  for  construc;ng  a  bootstrap  reference  to  a  

Registry  at  a   remote  address  and   for   crea;ng  and  expor;ng  a  Registry   in   the  current  VM  on  a  

par;cular  local  address.  

UNIDAD  7:  RMI  

Page 20: POO II - en java

   

SERVIDOR  RMI  

Server  

 

A   Registry   implementa;on   may   choose   to   restrict   access   to   some   or   all   of   its   methods   (for  

example,  methods  that  mutate  the  registry's  bindings  may  be  restricted  to  calls  origina;ng  from  

the   local   host).   If   a   Registry   method   chooses   to   deny   access   for   a   given   invoca;on,   its  

implementa;on  may  throw  AccessExcep;on,  which  (because  it  extends  RemoteExcep;on)  will  be  

wrapped  in  a  ServerExcep;on  when  caught  by  a  remote  client.  

 

The  names  used  for  bindings  in  a  Registry  are  pure  strings,  not  parsed.  A  service  which  stores  its  

remote  reference  in  a  Registry  may  wish  to  use  a  package  name  as  a  prefix  in  the  name  binding  

to  reduce  the  likelihood  of  name  collisions  in  the  registry.  

UNIDAD  7:  RMI  

Page 21: POO II - en java

   

SERVIDOR  RMI  

Client  

 

UNIDAD  7:  RMI  

Page 22: POO II - en java

Gracias  por  su  atención  

[email protected]

Boris Pérez