Escolar Documentos
Profissional Documentos
Cultura Documentos
Presentado por:
Presentado por:
Presentado al Ingeniero:
José Vicente Palacio Hernández
INTRODUCCION
Interfaces
El uso de interfaces remotas proporciona una serie de ventajas, como son: las
implementaciones de los métodos no son visibles por los clientes y no hace falta
comunicar a los clientes cambios realizados en las implementaciones de los métodos.
modelo de objetos
1. objetos distribuidos
2. modelo de objetos distribuidos
Definición:
En los sistemas Cliente/Servidor, un objeto distribuido es aquel que está gestionado por
un servidor y sus clientes invocan sus métodos utilizando un "método de invocación
remota". El cliente invoca el método mediante un mensaje al servidor que gestiona el
objeto, se ejecuta el método del objeto en el servidor y el resultado se devuelve al cliente
en otro mensaje.
Tecnologías orientadas a los objetos distribuidos:
Las tres tecnologías importantes y más usadas en este ámbito son:
1. RMI.- Remoto Invocation Method.- Fue el primer fremework para crear sistemas
distribuidos de Java. El sistema de Invocación Remota de Métodos (RMI) de Java
permite, a un objeto que se está ejecutando en una Máquina Virtual Java (VM), llamar
a métodos de otro objeto que está en otra VM diferente. Esta tecnología está
asociada al lenguaje de programación Java, es decir, que permite la comunicación
entre objetos creados en este lenguaje.
UNIVERSIDAD COOPERATIVA DE COLOMBIA
Extensión de las RPC (p.ej. Sockets) para un entorno orientado a objetos Reto: que un objeto local sea capaz
de invocar un método de un objeto potencialmente remoto Similitudes RPC vs. RMI: Programación con
interfaces Construidos sobre protocolos Request-Reply Nivel de transparencia equivalente: misma sintaxis
para invocación local y remota Diferencias RPC vs. RMI Con RMI se pueden usar técnicas (patrones y
metodologías) orientadas a objetos para su programación Semántica de parámetros más “rica” posibilidad
de usar OIDs como parámetros • Beneficio en el paso por referencia invocación a través del OID remoto en
vez de enviar el objeto completo
3. Implementación de RMI
4. Compactación automática de memoria
Hay que destacar que hay que emplear un proxy a cada lado de la comunicación para
proporcionar el soporte en tiempo de ejecución necesario para la comunicación entre
procesos, llevándose a cabo el correspondiente empaquetado y desempaquetado de
datos, así como las llamadas a sockets necesarias.
A pesar de su importancia histórica, este libro no analiza en detalle RPC, por los
siguientes motivos:
•RPC, como su nombre indica, es orientado a procedimiento. Las API de RPC emplean
una sintaxis que permite realizar llamadas a procedimiento o función. Por tanto, son más
adecuadas para programas escritos en un lenguaje procedimental, tal como C. Sin
embargo, no son adecuadas para programas escritos en Java, el lenguaje orientado a
objetos adoptado en este libro.
UNIVERSIDAD COOPERATIVA DE COLOMBIA
En lugar de RPC, Java proporciona el API RMI, que es orientado a objetos y tiene una
sintaxis más accesible que RPC.Eventos y notificaciones
En este apartado se explicará, con un ejemplo concreto, los pasos seguidos para elaborar
una aplicación con objetos distribuidos RMI. Esta aplicación ejemplo proporcionará un
servicio que acepta peticiones de tareas concretas especificadas por parte de los clientes.
Es decir, cada cliente puede especificar la tarea que desea que el servidor le realice,
utilizando para ello el paso de objetos serializados.
UNIVERSIDAD COOPERATIVA DE COLOMBIA
En primer lugar, se escribe la interfaz remota del servidor, que en este caso se
llamará ejecutor. Toda interfaz remota debe declararse como public y debe extender la
interfaz java.rmi. Remote. Además, esta interfaz debe definir los métodos que serán
accesibles remotamente. Por último, cada uno de estos métodos debe manejar la
excepción java.rmi. RemoteException. La segunda interfaz necesitada para este ejemplo
define el tipo Tarea. Este tipo es utilizado como un argumento del método ejecutar del
interfaz ejecutor. Esta segunda interfaz permite definir desde el lado cliente la tarea
(Tarea) que debe realizar el servidor y será pasada dinámicamente como argumento del
método remoto. Observamos que la interfaz Tarea extiende el interfaz java.io.
Serializable. RMI utiliza el mecanismo de serialización de objetos para transportar
objetos entre máquinas virtuales. Tarea no es un objeto accesible remotamente, sino
que es enviada por el cliente como argumento al servidor. En definitiva, el
objeto ejecutor del lado servidor queda a disposición de ejecutar tareas Tarea que le
soliciten los clientes.
package callback;
import java.rmi.*;
public interface ejecutor
extends Remote{
public String ejecutar(Tarea t) throws RemoteException;
}
UNIVERSIDAD COOPERATIVA DE COLOMBIA
package callback;
import java.io.Serializable;
public interface Tarea extends Serializable{
public String recado();
}
16. Se generan los archivos stub y skeleton a partir de la clase que implementa la
interfaz remota. Para ello se utiliza el compilador rmic. Para ejecutarlo
hacemos rmic nombre_claseo bien rmic -d directorio nombre_clase para
especificar una ubicación destino concreta.
1. ejecutor_Imp_Stub.class
2. ejecutor_Imp_Skel.class
17. Se inicia el servicio de registro RMI, rmiregistry. Un host que quiera exportar
referencias remotas a sus métodos de modo que los stubs puedan acceder a
ellos, debe estar ejecutando un servidor de registro RMI.
rmiregistry &
En entornos Windows:
start rmiregistry
package callback;
import java.rmi.*;
En el ejemplo que nos ocupa estamos suponiendo que las clases necesarias
residen en las máquinas implicadas, por lo que no sería necesario el uso de un
gestor de seguridad.
package callback;
public class tarea_Imp implements Tarea{
public String recado() {
return "Hello World";
}
}
package callback;
import java.rmi.*;
System.out.println(respuesta);
}catch(Exception e){
System.out.println("Error: "+e.getMessage());
}
}
}
WEBGRAFIA
https://es.slideshare.net/Tensor/modelos-de-sistemas-distribuidos-62743871
http://www.kybele.etsii.urjc.es/docencia/SD_GII_V/2011-2012/Material/[SSDD-2011-
12]Tema%204.Soluciones%20de%20SSDD.pdf