Rmi (Remote Method Invocation)
Metas
La meta principal de los diseñadores de RMI fue la de permitir a los programadores el desarrollo de programas distribuidos en JAVA, usando la misma sintáxis y semántica de los programas no distribuidos. La arquitectura de RMI define la forma como deben interactuar los objetos, cómo y cuándo ocurren las excepciones, cómo se administra la memoriay cómo pasan y retornan los parámetros a/desde los métodos remotos.
Que deseamos hacer con objetos remotos
Cliente
Result = Obj.method1(val1)
Servidor
Def Obj { int method1(int v) {} string method2(string v) {} int method3(int v) {} int method4(int v) {} }
La Arquitectura de JAVA RMI
Interfaces: La definición de un comportamiento y su implementación son conceptos separados. EnRMI, el código que define el comportamiento y el código que lo implementa están y se ejecutan en diferentes JVMs La definición de un servicio remoto se hace usando una interfaz de JAVA . La implementación se codifica en una clase.
Programa Cliente Interfaz
Programa Servidor Implementación
Sistema RMI
RMI soporta 2 clases que implementan la misma interfaz. La primera implementa elservicio y se ejecuta en el servidor. La segunda actúa como un proxy para el servicio remoto y se ejecuta en el cliente.
Service
Client Service Proxy
RMI ¨Magic¨
Server Service Implementation
Niveles Arquitecturales de RMI
Client Program Server Program
RMI System
Stubs Remote Reference Layer Transport Layer
Stubs
Nivel del Stub y el Skeleton: están justo pordebajo de la vista del desarrollador. Intercepta las llamadas que hace el cliente y las redirecciona a un servicio RMI remoto.
Niveles Arquitecturales de RMI
Nivel de referencia remota (Remote Reference Layer). Esta al tanto de cómo interpretar y administrar las referencias que realizan los clientes a objetos remotos. El Nivel de Transporte: se basa en conexiones TCP/IP entre máquinas enuna red. Ofrece conectividad básica, así como algunas estrategias para atravesar cortafuegos.
Nivel de los Stubs y Skeletons
En este nivel RMI usa el patrón de diseño de Proxy (Proxy design pattern). En este patrón un objeto en un contexto es representado por otro (el proxy) en un contexto diferente. El proxy sabe cómo dirigir (to forward) las invocaciones a métodos entre los distintosobjetos participantes. Interface
+request()
Real Subject +request() Real Subject
Proxy +request()
Nivel de los Stubs y Skeletons
Un skeleton es una clase auxiliar generada por RMI. Un skeleton ´´entiende´´ cómo comunicarse con el stub a través del enlace RMI. El skeleton mantiene una conversación con el stub; lee los parámetros de la llamada, efectúa la invocación alservicio remoto (to the remote service implementation object), acepta el valor de retorno y lo retorna al stub. En la implementación de RMI de Java 2 SDK la clase skeleton está obsoleta debido al protocolo new wire.
Nivel de Referencia Remota
Los niveles de referencia remota definen y soportan la semántica de la invocación de una conexión RMI. Este nivel ofrece un objeto RemoteRef querepresenta el enlace al objeto que alberga la implementación del servicio remoto. Los stubs usan el método invoke() para dirigir (to forward) la llamada. El objeto RemoteRef entiende la semántica de invocación para servicios remotos.
Nivel de Transporte
El nivel de transporte realiza la conexión entre JVMs. Todas las conexiones son stream-based y usan TCP
Aún si dos JVMs se estánejecutando en la misma computadora, ellas se conectan a través del protocolo TCP/IP.
Nivel de Transporte
Sun e IBM trabajaron en la siguiente versión de RMI: RMI-IIOP.
Estará disponible con Java 2 SDK Versión 1.3. No usa JRMP, sino IIOP (the Object Management Group (OMG) Internet InterORB Protocol) para comunicar clientes y servidores.
Nombrar objetos remotos
Cómo...
Regístrate para leer el documento completo.