Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


Barra lateral

Base de datos de juegos
GameBoy Advance (GBA)
Proyecto Integral de Ingeniería del Software
Metodologías Ágiles
Trabajo Fin De Grado
Guía Memoria TFG

Colecciones

Otros

dad:rmi

¡Esta es una revisión vieja del documento!


RMI: Remote Method Invocation

  • Implementación de java del Remote Procedure Call
  • Invocación aun método que puede estar en otra máquina
  • Los datos se pasan como argumentos del método.7

Diferencias con la programación local

  • Definicion de objetos
    • Locales: definidos por una clase
    • Remotos: Comportamiento definido por una interface que extiende java.rmi.remote
  • Implementación de ojetos
    • Locales: implementados por su clase
    • Remotos: comportamiento ejecutado por una clase que implementa la interfaz
  • Creación de objetos
    • Locales: Instancias se crean con new
    • Remotos: instancias creadas en el servidor con un new, el cliente no puede crear objetos
  • Acceso a objetos:
    • Locales: a través de referencia local
    • Remoto: referencia a un stub que implementa la interfaz remota y que hace proxy
  • Referencias:
    • Locales: una referencia a un objeto apunta directamente al objeto en memoria
    • Remotos: referencia al proxy que sabe como conectar con el objeto remoto
  • Referencias activas:
    • Locales: si es apuntada por al menos un objeto
    • Remoto: activo mientras sus servicios sean solicitados durante un período de tiempo
  • Recolector de basura:
    • Locales: Recogido si no está activo
    • Remotos: Recogido si no hay referencias locales ni está siendo utilizado por clientes externos
  • Excepciones:
    • Locales: RunTimeExceptions Y Exceptions
    • Remotos: RemoteException

Arquitectura

Tenemos dos conceptos principales: Definición de comportamiento e implementación de comportamiento

dad:diagram1.png

Tres capas

  • Stub: captura las invocaciones del cliente y las redirige al objeto completo
  • capa Referencias Remotas: Sabe como gestionar las referencias de los clientes a objetos remotos
  • Capa de transporte: Permite la conectividad entre objetos basada en TCP/IP.

dad:diagramadecapas.png

Servicio de Nombres

  • JNDI (Java Naming Directory Interface)
    • Busca los objetos de java remotos por su nombre
    • No se limita solo a RMI
  • RMIRegistry
    • El servidor registra un objeto y lo hace accesible a los clientes
    • Corre en máquinas donde estén los servidores
    • Puerto por defecto: 1099

Como Buscar

  • El cliente debe buscar el servicio:
    • java.rmi.Naming.lookup(RMIUrl)
  • Una URL en versión RMI sería:
rmi://<host_name>[:puerto del servicio de directorio]/<nombre del servicio>

Distribución de clases

  • Servidor:
    • Interface
    • Implementación de la Interface
    • Stubs
  • Cliente:
    • Interface
    • Stubs

Ejemplo de implementación

dad/rmi.1701087399.txt.gz · Última modificación: 2023/11/27 12:16 por thejuanvisu