martes, 28 de octubre de 2014

[Java] Hello World con RMI


RMI concepto

Es un tipo de tecnología que implementa la posibilidad de invocar metodos de un objeto que se corre en una maquina virtual desde otro objeto corriendo en una maquina virtual separada

A grandes rasgos la invocación en un procedimiento de RMI consiste en compartir una misma “interface” donde no se tiene un metodo implementado.

Aunque se ve como llamar o invocar a un metodo normal, se procesa y se ejecuta de manera remota.



Este sería el concepto




Primero se creara la interfaz que se compartira. 


import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ObjetoRemoto extends Remote {
        public String getSaludo(String nombre)
                throws RemoteException;
}


Se implementa la interfaz 

   
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;


public class ObjetoRemotoImple extends UnicastRemoteObject
implements ObjetoRemoto {

    public ObjetoRemotoImple() throws RemoteException {
        super(); 
    }

 
    @Override
    public String getSaludo(String nombre) throws RemoteException {
            String nombreMayus = nombre.toUpperCase(); 
            return "HOLA SOY RMI Y ME LLAMO " + nombreMayus;
    }
    
}


Y crearemos una clase principal que generara la instancia del objeto que se consumira. 

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class ServerRMI {
    
    public static void main(String[] args) throws Exception{
        System.out.println("Abriendo servidor");
        ObjetoRemotoImple objR = new ObjetoRemotoImple(); 
        Registry registry = LocateRegistry.getRegistry(5001);
        registry.rebind("OBJRemoto", objR);
        System.out.println("Servidor activo");
    }
    
}

Proceso de compilación 
  1. Primero Compilaremos todas las clases utilizando el siguiente comando:
    javac ServerRMI
  2. Luego crearemos el stub para el cliente
    rmic ObjectoRemotoImple
    Esto nos generara un archivo _stub que tendra que copiarse al path del cliente
  3. Levantamos el registro
    rmiregistry 5001 
    5001 porque es el puerto que utiliza la aplicación
Con esto ya es posible consumir los servicios y los hacemos con un cliente como el siguiente 

La Interfaz 


import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ObjetoRemoto extends Remote {
        public String getSaludo(String nombre)
                throws RemoteException;
}

Cliente 
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;


public class ClienteRMI {
    public static void main(String[] args) throws Exception {
        Registry reg = LocateRegistry.
                getRegistry("127.0.0.1",5001);
        ObjetoRemoto remoto ; 
        remoto = (ObjetoRemoto)reg.lookup("OBJRemoto"); 
        String cadena = remoto.getSaludo("Luis"); 
        System.out.println("El nombre es " + cadena);
    }
}

Con esto ya sera posible hacer el hola mundo desde RMI 


Descargar codigo de github

https://github.com/cobymotion/RMIHelloWorld/

No hay comentarios:

Publicar un comentario