Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


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

Servidor

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