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
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
- Primero Compilaremos todas las clases utilizando el siguiente comando:
javac ServerRMI - Luego crearemos el stub para el cliente
rmic ObjectoRemotoImpleEsto nos generara un archivo _stub que tendra que copiarse al path del cliente - Levantamos el registro
rmiregistry 5001 5001 porque es el puerto que utiliza la aplicación
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
No hay comentarios:
Publicar un comentario