Вы находитесь на странице: 1из 17

NDICE

INTRODUCCIN

3
3. RMI (REMOTE METHOD INVOCATION)

3.1. CARACTERSTICAS Y ESTRUCTURA DE RMI 4


3.2. EL API JAVA RMI.

3.3. JERARQUA DE OBJETOS RMI

3.4. EL SISTEMA DE NOMBRADO REGISTRY

10

3.5. DESARROLLO DE APLICACIONES DISTRIBUIDAS. 10


3.6. PASO DE PARMETROS A TRAVS DE LA RED.
3.7. CALLBACKS (RESGUARDOS)
CONCLUSIN

17

BIBLIOGRAFA

18

12

11

INTRODUCCIN.

En este trabajo les hablamos acerca de la comunicacin a travs del modelo


cliente/Servidor dentro del cual utilizamos el compilador java, escribiendo los
cdigos en cada lado que es cliente quien pide una informacin al servidor y el
servidor con otros cdigos quien busca y regresa respuesta al cliente.
Para poder interactuar con las maquinas a travs del RMI que es un mtodo de
invocacin remota en el cual se utiliza un stub y skeleton para comunicarnos, es
fcil de usar, cuenta con sus debidos atributos, parmetros, como todo mtodo
cuanta con sus caractersticas, su arquitectura que cuenta con 4 capas por el cual
es el medio en como viaja nuestra informacin al establecer nuestra
comunicacin, sus jerarqua para saber su grado, las importaciones debidas y que
es lo que se importa en cada mtodo, nombramos como se guardara, el desarrollo
de nuestro sistema distribuido de comunicacin y por ultimo en que parte ser
almacenado nuestro resultado.

3. RMI (REMOTE METHOD INVOCATION).


2

Es un mecanismo ofrecido por Java para invocar un mtodo de manera remota,


situados en distintas o las mismas mquinas virtuales de Java, pero cuenta con la
capacidad de pasar uno o ms objetos junto con la solicitud, el objeto puede incluir
informacin que va a cambiar el servicio que se realiza en el equipo remoto.
Adems comparte recursos y carga de procesamiento a travs de varios sistemas.
Permite que una aplicacin o applet se comunique con objetos que residen en
programas que se ejecutan en mquinas remotas.
Forma parte del entorno estndar de ejecucin de Java y proporciona un
mecanismo simple para la comunicacin de servidores en aplicaciones distribuidas
basadas exclusivamente en Java.
Una peticin para invocar el mtodo de un objeto remoto se le conoce como
solicitud de RMI, estas tienen la misma sintaxis como una solicitud para invocar un
mtodo de objeto en el mismo equipo (local). En general, el RMI est diseado
para preservar el modelo de objetos y sus ventajas a travs de una red.
El resultado de la invocacin de los mtodos en el objeto remoto se enva de
regreso al stub local, que los remite al emisor original de la llamada. Aparte de
ligar el stub con el objeto remoto, el cdigo escrito por el programador para
comunicar con el objeto remoto es igual al cdigo que se utilizara si el objeto se
encontrara en una aplicacin o applet local.

3.1 CARACTERSTICAS Y ESTRUCTURA DE RMI.


CARACTERSTICAS
o Facilidad de uso en la programacin por estar especficamente diseado
para JAVA.
o Proporciona paso de objetos por referencia.
o Recoleccin de basura distribuida.
o Paso de tipos arbitrarios.
Invocacin
1) Encapsulado de los parmetros.
2) Invocacin del mtodo (del cliente con el servidor). El invocador se queda
esperando una respuesta.
3) Al terminar la ejecucin, el servidor serializa el valor de retorno y lo enva al
cliente.
4) El cdigo cliente recibe la respuesta y contina como si la invocacin hubiera
sido local.
ARQUITECTURA DE RMI
3

Fig. 1. Arquitectura RMI.


Primera Capa:
Es la de aplicacin y corresponde con la implementacin real de las aplicaciones
cliente y servidor.

Implementacin real de las aplicaciones cliente y servidor.


Llamadas a alto nivel para acceder y exportar objetos remotos.
Se declaran mtodos en una interfaz que herede de java.rmi.Remote.
Una vez que los mtodos han sido implementados, el objeto debe ser
exportado.
De forma implcita: si el objeto hereda de la clase
UnicastRemoteObject (paquete java.rmi.server)
De forma explcita: con una llamada al mtodo exportObject () del
mismo paquete.

El Servidor proporciona un servicio RMI y el Cliente llama a los mtodos del objeto
ofrecido por el servicio. El servicio RMI se debe registrarse en un servicio de
consulta para permitir a los clientes encontrar el servicio.
Una vez que el servicio se ha registrado, el servidor esperara a que lleguen
peticiones RMI desde los clientes.
El cliente solicita el servicio mediante el nombre del cual se registro y obtiene la
referencia del objeto remoto.
Cuando ya se ha obtenido la referencia remota los clientes pueden enviar
mensajes como si se tratase de objetos ejecutndose en la misma mquina virtual.
4

Segunda Capa:
Es la que interacta directamente con la capa de aplicacin.
La capa stub y skeletons SE sita bajo la aplicacin. Dota a clientes y servidores
de una interfaz que les permite localizar objetos remotos para invocar sus mtodos
como si fueran locales.
La clase stub realiza el papel de proxy de la implementacin del servicio remoto.
Antes de que el stub pase una peticin al servicio remoto debe agrupar los
parmetros para la transmisin, conocida como marshalling.
La clase Skeleton es una clase que se genera por RMI, es la responsable de
comunicarse con el stub durante la comunicacin RMI. Construye parmetros para
formular los tipos primitivos y objetos, que se conoce como unmarshalling.

Fig. 2. Segunda Capa.


1. Un cliente invoca un mtodo remoto invocando localmente el mismo mtodo en
el stub.
2. El stub genera un mensaje que contiene: la referencia al mtodo y un stream de
bytes que resulta de secuencializar los parmetros del mtodo.
3. El stub crea dinmicamente un socket y establece la conexin con el skeleton.
4. El skeleton recibe el mensaje los decodifica y delega en un thread la invocacin
del mtodo del servidor. Quedando dispuesto de nuevo a la recepcin de un nuevo
mensaje (no siempre es multithread).
5. El thread genera un mensaje con el stream de bytes que corresponde a la
secuencilizacin de los resultados de la invocacin.
6. El thread enva por el socket abierto el mensaje de retorno.
7. El stub decodifica el mensaje y concluye la invocacin inicial retornando los
resultados al cliente.

Tercera Capa:

Es la de referencia remota. Responsable del manejo de la parte semntica de las


invocaciones remotas. Tambin es responsable de la gestin de la replicacin de
objetos y realizacin de tareas especficas de la implementacin con los objetos
remotos, como el establecimiento de las persistencias semnticas y estrategias
adecuadas para la recuperacin de conexiones perdidas. Proporciona un objeto
RemoteRef el cual representa la conexin con el objeto remoto.
Cuarta Capa:
Es la de transporte; es la responsable de realizar las conexiones necesarias entre
las maquinas virtuales, todas la conexiones son conexiones de red basadas en
flujos que utilizan TCP/IP. El RMI utiliza un protocolo llamado Java Remote
Method Protocol (JRMP).

3.2 EL API JAVA RMI.


API de Java
Es una interfaz de programacin de aplicaciones provistas por los creadores del
lenguaje java, y que da a los programadores los medios para desarrollar
aplicaciones Java.
La API de Java provee un conjunto de clases utilitarias para efectuar toda clase de
tareas dentro de un programa.
Interfaces y clases RMI
Implementa 5 paquetes.
Java.rmi: contiene Clases, Interfaces y Excepciones vistas por los clientes.
o Interfaz Remote: interfaz base a implementar/extender por los objetos
remotos.
o Excepcin RemoteException: base de las excepciones lanzadas por los
objetos remotos.
o Clase Naming: clase de apoyo para acceder al servicio de nombres
rmiregistry.
o Clase RMISecurityManager: gestor de seguridad para aplicaciones RMI
Java.rmi.server: Contiene clases, Interfaces y Excepciones vistas por los
servidores.
o Clase RemoteObject: implementacin de mtodos bsicos para objetos
remotos (hashCode(), equals())
o
Clase RemoteServer: superclase base para las implementaciones de
objetos remotos
o Clase UnicastRemoteObject: usada para crear y exportar objetos remotos
con JRMP y obtener un stub que se comunicar con ese objeto remoto

o Clase RMIClassLoader: cargador de clases (bytecodes) desde orgenes


remotos necesario para deserializar stubs y objetos serializados recibidos
como parmetro
o Clase ObjID: clase que encapsula un identificador nico para objetos
o Clase RemoteStub: superclase de la que heredan las implementaciones de
stubs
o Interface RemoteRef, ServerRef: gestin de referencias remotas
Java.rmi.registry: Contiene Clases, Interfaces y Excepciones tiles para localizar
y registrar objetos remotos.
o Interface Registry: definicin del interfaz remoto de rmiregistry
o Clase LocateRegistry: clase con mtodos para creacin y consulta de
servidores de nombres.
Java.rmi.dgc: Contiene Clases, Interfaces y Excepciones para la recoleccin de
basura.
Java.rmi.activation: Contiene Clases, Interfaces y Excepciones para la activacin
de objetos remotos.
o Clase Activatable: Usadas en la creacin y exportacin de objetos remotos
activables.
API java.RMI

3.3 JERARQUA DE OBJETOS RMI.

Fig. 3. Jerarqua de objetos.

3.4 SISTEMA DE NOMBRADO REGISTRY.


Es un servidor simple que permite que una aplicacin vea los objetos lo cuales
estn siendo importados por un RMI.
Una vez que se tiene un objeto que est siendo exportado por un servidor que
utiliza mtodos de RMI, la comunicacin es entonces como una simple llamada a
mtodos de un objeto que puede existir en una mquina diferente.
Caractersticas
o Este setup requiere algunos parmetros de localizacin de los objetos
remotos.
o Es fcil llamar a objetos remotos si se tiene su ubicacin.
o Una vez que el objeto ha sido localizado, usarlo de manera remota es
relativamente fcil.
o Para poder inicializar objetos remotos, hay que utilizar los servicios de
registry.

3.5 DESARROLLO DE APLICACIONES DISTRIBUIDAS.


Componentes de aplicaciones distribuidas
Clientes:
Conducen el flujo de la aplicacin. Localizan e invocan mtodos ofertados como
remotos por los servidores.
Servidores:
Conjunto de objetos de ofrecen interfaces remotas pblicas cuyos mtodos
pueden ser invocados por clientes de cualquier procesador de la plataforma.
Registro:
Servicio esttico que se establece en cada nudo, en el que se registran los
servidores con un nombre, y donde los clientes los localizan.

Fig. 4. Componente de Aplicacin Dist.


Conceptos
Objeto remoto:
o Objeto cuyos mtodos pueden invocarse desde otras mquinas virtuales.
o Descrito por una o ms interfaces Remotas en las que se declaran los
mtodos que pueden ser invocados por objetos desde otras mquinas
virtuales.
Invocacin a mtodos remotos:
o Accin de invocar un mtodo de una interfaz remota en un objeto remoto.
o Tiene la misma sintaxis de un mtodo local.
Pasos Para Desarrollar Una Aplicacin Distribuida
1. Se define la interfaz remota
2. Se desarrolla el servidor que implementa la interfaz remota.
3. Se desarrolla el cliente.
4. Se compilan los ficheros Java fuentes.
5. Se ejecuta el RMI Registry en el procesador remoto.
6. Se ejecuta el servidor en el procesador remoto.
7. Se ejecuta el cliente en el procesador local.

3.6 PASO DE PARMETROS A TRAVS DE LA RED.


Paso de parmetros a mtodos remotos
Hay 3 mecanismos bsicos
1. Tipos primitivos.
Se pasan por valor (copia). Todos son serializables.
Para que la clase sea realmente Serializable, necesita adems, que todos
sus atributos sean tambin Serializable. Esto quiere decir que sus atributos
pueden ser tipos primitivos (int, char, float, etc). Cuando pasamos un
objeto Serializable como parmetro de un mtodo remoto, java se encarga
de convertir ese objeto a bytes (serializar el objeto), enviarlo por red y
hacerlo llegar al otro lado (el servidor). All, java se encarga de convertir
nuevamente esos bytes a un objeto (deserializar el objeto).

10

2. Objetos Remotos.
Se pasan por referencia (talones, usados para invocar mtodos remotos).
Un objeto Remoto es el que implementa la interface Remoto. Adems de
compilarlo de la forma habitual, necesitamos compilarlo con el
compilador rmic.
3. Objetos locales.
Se pasan por valor (slo si son serializables), se crea un nuevo objeto en la
mquina virtual que recibe la copia.

3.7 CALLBACKS.
Una devolucin de llamada o retrollamada, los callbacks, no son asincrnicos, es
decir, dispara el callback y cuando termina la ejecucin de esa funcin de callback
continua desde donde lo dispar.
Callbacks en RMI
El cliente inscribe un objeto remoto para recibir una invocacin remota.
o Al ocurrir cierto evento, el servidor realiza una devolucin a cada cliente
interesado.

Fig. 5. Peticin RMI.

11

Interacciones cliente servidor

Fig. 6. Interaccin C/S.


Despliegue

Fig. 7. Despliegue.

12

Interfaz de callback
El servidor ofrece un mtodo remoto para que el cliente registre sus callbacks
Hay que disear una interfaz remota para el callback
La interfaz debe incluir un mtodo que ser invocado en el callback desde el
servidor
El cliente deber ser una subclase de RemoteObject e implementar la interfaz de
callback
El cliente se registrar frente la clase remota para ser rellamado.
El servidor invoca el mtodo remoto del cliente en caso de aparecer el evento
indicado.
Diagrama de eventos para la aplicacin <<hello>>

Fig. 8. Diagrama de eventos.


Caractersticas
o Clientes interesados se registran en un objeto servidor para que les sea
notificado un evento
o Cuando el evento se produce, el objeto servidor notifica al cliente su
ocurrencia
Cmo se ejecuta?
13

Pasos
1. Se ejecuta el servidor de registro RMI, rmiregistry, en la mquina que
contendr al objeto servidor.
2. Se crea un objeto en el servidor, se exporta, y se registra en el servicio
rmiregistry con un nombre. (Se crea instancia skeleton).
3. Se crea el objeto cliente, que llamar a un mtodo de la interfaz del
objeto remoto.
4. El servidor de registro enva al proceso cliente una referencia remota al
objeto (stub). Este stub contiene la direccin IP del host donde reside el
objeto remoto, el numero de puerto de escucha y el ID del objeto.
5. El stub serializa los argumentos y enva a la capa de referencias
remotas una peticin de conexin.
6.

La capa de referencias remotas indica a la capa de transporte que


necesita abrir una conexin para enviarle el flujo de datos resultante del
paso anterior.

7. La capa de transporte crea un socket de cliente para enviar dicho flujo.


8. En el host remoto los datos llegan a la capa de transporte y el socket
servidor asociado los lee.
9. La capa de referencias remotas pasa los datos al skeleton.
10. El skeleton extrae del flujo de datos serializado los objetos incluidos y
pasa la llamada al objeto remoto.
11. El objeto remoto ejecuta el mtodo invocado con los argumentos
proporcionados y, si corresponde devuelve un valor al objeto skeleton.
12. El skeleton enva una peticin de conexin a la capa de referencias
remotas y delega en ella el envo de la respuesta.
13. La capa de referencias remotas serializa la respuesta y enva el flujo de
bytes resultante a la capa de transporte indicndole que necesita
conexin.
14. La capa de transporte remota abre un socket de cliente y enva la
respuesta al host local.
15. sta llega a la capa de transporte del host local y all un socket servidor
lo transmite a la capa de referencias remotas.
14

16. La capa de referencias remotas extrae la informacin serializada y la


enva al stub.
17. El stub enva el valor devuelto al objeto local.

15

CONCLUSIN.

El RMI es un mtodo para que invoquemos algo de manera remota es decir


rpido, utiliza un callback el cual hace una retrollamada no lo hace de manera
asncrona es decir termina una y comienza la otra, su informacin es almacenada
para despus verificar donde se encuentra. Como lemos ac mencionamos todo
acerca del RMI las cosas que utiliza para dicha comunicacin, este al igual que el
socket lo programamos para interactuar en maquinas.
Es importante saber que hoy en da existen muchas tecnologas avanzadas por el
cual el ser humano puede comunicarse, ya sea a travs de una red para platicar
con personas que no estn cerca de nosotros o hacer una simulacin en nuestros
maquinas y poder hacer nuestra compilacin de cdigos para dicho proceso.

16

BIBLIOGRAFA

http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoria-domingo/node6.html

http://es.slideshare.net/VERONICAPONCE5/rmi-remote-method-invocation41837337

17

Вам также может понравиться