1. RMI
Programación en ambiente cliente – servidor.
M.S.C. Víctor Manuel Evaristo Salinas
Aguilar Ortiz Julissa.
Anaya Manzano Juan.
Avelino Cabrera Oscar.
Avendaño Mendoza Graciela.
Bautista Carrera Sandra.
Ing. Informática
7mo. Semestre.
Agosto 2016
2. ¿Qué es RMI?
RMI (Java Remote Method Invocation) es un mecanismo
ofrecido por Java para invocar un método 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.
3. ¿Qué es 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), recolección de basura distribuida (Garbage Collector
distribuido) y paso de tipos arbitrarios (funcionalidad no
provista por CORBA).
4. Metas del sistema RMI
• Proporcionar invocación remota de objetos que se
encuentran en maquinas diferentes
• Soportar llamadas a los servidores desde los applets
• Integrar el modelo de objetos distribuidos en el lenguaje
Java de una manera natural, conservando en medida de
lo posible la semántica de los objetos Java.
5. Funciones.
• Localizar objetos remotos
• Comunicarse con los objetos remotos
• Cargar el código de operación que implementa a las
clases que son pasadas por valor
6. Invocación.
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 TCP. A partir de ese momento, un
cliente puede conectarse e invocar los métodos
proporcionados por el objeto.
7. La invocación se compone de los siguientes pasos:
Encapsulado (marshalling) de los parámetros (utilizando la
funcionalidad de serialización 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.
8. Limitaciones.
El uso de RMI resulta muy natural para todo aquel
programador de Java ya que éste no tiene que aprender una
nueva tecnología completamente distinta de aquella con la
cual desarrollará. Sin embargo, RMI tiene algunas limitaciones
debido a su estrecha integración con Java, la principal de ellas
es que esta tecnología no permite la interacción con
aplicaciones escritas en otro lenguaje.
Las referencias no son persistentes: Si cae el servidor todas las
referencias distribuidas dejan de ser válidas.
9. Elementos de RMI
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.
10. Conectividad entre cliente y
servidor
Otro punto importante en RMI, es el cómo se produce la
conectividad entre el cliente y servidor. Para esto se ocupa
una herramienta de JAVA, llamada RMI Registry.
El RMI Registry puede estar localizado en un lugar distinto al
servidor, y se encarga de registrar un determinado objeto y
asignarle un servidor que se encargará de procesar dicho objeto.
11. Seguridad en RMI
RMI proporciona un mecanismo alterno basado en el
protocolo HTTP (confiable para el firewall), para
permitir a los clientes que se encuentran detrás del
firewall, invocar métodos de objetos que se
encuentren del otro lado de él.
14. Conclusión.
• La utilización de objetos en el desarrollo de sistemas
distribuidos, presenta varias ventajas que permiten ocultar
las dificultades inherentes a la distribución en niveles de
abstracción inferiores.
• La invocación remota de métodos en Java parte del hecho
de correr sobre una plataforma heterogénea.
• RMI posee todas las características de seguridad que hereda
de la plataforma Java misma.