Aplicaciones distribuidas rmi

Solo disponible en BuenasTareas
  • Páginas : 9 (2131 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de febrero de 2011
Leer documento completo
Vista previa del texto
Un ejemplo RMI (Remote Method Invocation o Invocación de Métodos Remotos)
Al igual que con los RPC (Remote Procedure Call o Llamada a Procedimientos Remotos) de C en linux, es posible hacer que un programa en java llame a métodos de objetos que están instanciados en otro programa distinto, incluso que estén corriendo en otra máquina conectada en red. Estos métodos, aunque los llamemos desde esteordenador, se ejecutan en el otro. Como se comentó en Ing. Ana Lidia Barcenas Cortés Página 1 01/02/2011el RPC, este sistema tiene la ventaja de que si, por ejemplo, tenemos un ordenador capaz de realizar cuentas muy deprisa y otro capaz de dibujar gráficos maravillosos y además necesitamos hacer un programa con muchas cuentas y muchos gráficos, podemos implementar en el ordenador de las cuentasaquellas clases que echan cuentas, en el ordenador de gráficos aquellas clases de pintado y hacer que cada ordenador haga lo que mejor sabe hacer. Cuando al hacer un gráfico necesitemos echar cuentas, llamaremos a la clase remota que echa las cuentas, y estas se harán en el ordenador de las cuentas, devolviendo el resultado al de los gráficos.
Vamos a hacer un ejemplo muy tonto de rmi, paraintroducirnos en cómo funciona. Harémos una clase capaz de sumar ni más ni menos que dos enteros. Haremos que esta clase quede registrada como objeto remoto, por lo que podrá ser llamada desde otros ordenadores. Harémos un cliente capaz de llamar a esa clase para sumar 2 + 3.
¿Qué cosas tenemos que hacer?
Vamos a ver qué clases necesitamos para hacer nuestros clientes y servidores de rmi, sinextendernos demasiado. Luego veremos cada uno de estos puntos por detallado.
• InterfaceRemota. Es una interface java con todos los métodos que queramos poder invocar de forma remota, es decir, los métodos que queremos llamar desde el cliente, pero que se ejecutarán en el servidor.
• ObjetoRemoto. Es una clase con la implementación de los métodos de InterfaceRemota. A esta clase sólo la ve elservidor de rmi.
• ObjetoRemoto_Stub. Es una clase que implementa InterfaceRemota, pero cada método se encarga de hacer una llamada a través de red al ObjetoRemoto del servidor, esperar el resultado y devolverlo. Esta clase es la que ve el cliente y no necesitamos codificarla, java lo hace automáticamente para nosotros a partir de ObjetoRemoto.
En el pc/máquina servidor de rmi deben correr dosprogramas
• rmiregistry. Este es un programa que nos proporciona java (está en JAVA_HOME/bin, siendo JAVA_HOME el directorio en el que tengamos instalado java). Una vez arrancado, admite que registremos en él objetos para que puedan ser invocados remotamente y admite peticiones de clientes para ejecutar métodos de estos objetos.
• Servidor. Este es un programa que debemos hacernos nosotros. Debeinstanciar el ObjetoRemoto y registrarlo en el rmiregistry. Una vez registrado el ObjetoRemoto, el servidor no muere, sino que queda vivo. Cuando un cliente llame a un método de ObjetoRemoto, el código de ese método se ejecutará en este proceso.
En el pc/máquina del cliente debe correr el programa
• Cliente. Este programa debemos hacerlo nosotros. Pide al rmiregistry del pc/máquina servidoruna referencia remota al ObjetoRemoto. Una vez que la consigue (en realidad obtiene un ObjetoRemoto_Stub), puede hacer las llamadas a sus métodos. Los métodos se ejecutarán en el Servidor, pero Cliente quedará bloqueado en cada llamada hasta que Servidor termine de ejecutar el método.
La interface de la clase remota
Lo primero que tenemos que hacer es una interface con los métodos que queremosque se puedan llamar remotamente. Esta interface sería como la siguiente:
import java.rmi.Remote;
public interface InterfaceRemota extends Remote
{
public int suma (int a, int b) throws java.rmi.RemoteException;
}
Tiene que heredar de la interface Remote de java, si no el objeto no será remoto. Añade además los métodos que queramos, pero todos ellos deben lanzar la excepción...
tracking img