miércoles, 18 de noviembre de 2015

(Remote Method Invocation)

Aplicaciones prácticas  de RMI

Crear un servidor RMI

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. 

Cuando se crea un interfaz remoto:
  • El interfaz debe ser público.

    • Debe extender (heredar de) el 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 claúsula throws, además de las excepciones que pueda manejar
EJEMPLO:
public interface MiInterfazRemoto extends java.rmi.Remote
{
  public void miMetodo1() throws java.rmi.RemoteException;
  public int miMetodo2() throws java.rmi.RemoteException;
}
Implementar el interfaz remoto


public class MiClaseRemota
extends java.rmi.server.UnicastRemoteObject
implements MiInterfazRemoto
{
  public MiClaseRemota() throws java.rmi.RemoteException
  {
    // Código del constructor
  }

  public void miMetodo1() throws java.rmi.RemoteException
  {
    // Aquí ponemos el código que queramos
    System.out.println(“Estoy en miMetodo1()”);
  }

  public int miMetodo2() throws java.rmi.RemoteException
  {
    return 5; // Aquí ponemos el código que queramos
  }

  public void otroMetodo()
  {
    // Si definimos otro método, éste no podría llamarse
    // remotamente al no ser del interfaz remoto
  }

  public static void main(String[] args)
  {
    try
    {
      MiInterfazRemoto mir = new MiClaseRemota();
      java.rmi.Naming.rebind(“//” + java.net.InetAddress.getLocalHost().getHostAddress() +
                              ”:” + args[0] + “/PruebaRMI”, mir);
    }
    catch (Exception e)
    {
    }
  }
}
La clase MiClaseRemota implementa el interfaz MiInterfazRemoto que hemos definido previamente. Además, hereda de UnicastRemoteObject, que es una clase de Java que podemos utilizar como superclase para implementar objetos remotos.
 Ejecutar el servidor:

Crear un cliente RMI
Vamos ahora a definir un cliente que accederá a el/los objeto/s remoto/s que creemos. Para ello seguimos los siguientes pasos:
  1. Definir la clase para obtener los objetos remotos necesarios
    La siguiente clase obtiene un objeto de tipo MiInterfazRemoto, implementado en nuestro servidor:
    public class MiClienteRMI
    {
      public static void main(String[] args)
      {
        try
        {
          MiInterfazRemoto mir = (MiInterfazRemoto)java.rmi.Naming.lookup(“//” +
                                  args[0] + :” + args[1] + “/PruebaRMI”);

          // Imprimimos miMetodo1() tantas veces como devuelva miMetodo2()
          for (int i=1;i<=mir.miMetodo2();i++) mir.miMetodo1();
          }
          catch (Exception e)
          {
            e.printStackTrace();
          }
        }
      }
    }



No hay comentarios.:

Publicar un comentario