viernes, 8 de julio de 2016

Archivo RMI

Archivo RMI

RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar un metodo de manera remota. Forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras tecnologías debe utilizarse CORBA o SOAP en lugar de RMI.
RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), recoleccion de basura distribuida (Garbage Collector distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).
A través de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estará accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TPC. A partir de ese momento, un cliente puede conectarse e invocar los métodos proporcionados por el objeto.
La invocación se compone de los siguientes pasos:
·Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de serializacion de Java).
·Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta.
·Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente.
·El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local.

ELEMENTOS

Toda aplicación RMI normalmente se descompone en 2 partes:
·Un servidor, que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque.
·Un cliente, que obtiene una referencia a objetos remotos en el servidor, y los invoca.

EJEMPLO

Un servidor RMI consiste en definir un objeto remoto que va a ser utilizado por los clientes. Para crear un objeto remoto, se define una interfaz, y el objeto remoto será una clase que implemente dicha interfaz. Veamos como crear un servidor de ejemplo mediante 3 pasos:
     ·   Definir la interfaz remota. Cuando se crea una interfaz remota:
·   La interfaz debe ser pública.
·   Debe heredar de la interfaz java.rmi.Remote, para indicar que puede llamarse desde cualquier máquina virtual Java.
·   Cada método remoto debe lanzar la excepción java.rmi.RemoteException en su cláusula throws, además de las excepciones que pueda manejar.


·         Implementar la interfaz remota