Sei sulla pagina 1di 4

Jorge Andres Moreno Jaimes (jamper91) RMI en Ubuntu Buenas dias, el dia de hoy les traigo una guia

sobre como implementar RMI en ubuntu, les recuerdo que el cdigo lo pueden bajar de aqui. Antes de empezar a realizar el manual les traigo unos conceptos: RMI (Invocacin remota de mtodos) nos permite llamar una funcion de java que no esta en la aplicacin actual que se esta desarrollando, es decir me permite llamar un mtodo de un objeto que se encuentra en otra maquina, es muy similar a RPC en lo que hace, con la gran diferencia de que este RMI, me permite el envo de objetos como parmetros.

Requerimientos: Para poder ejecutar el cliente y el servidor, necesitamos tener bien instalado Java en nuestras maquinas, y tambien que nuestro JDK y nuestro JRE, sean la misma versin, pues si no tendremos problemas (algo que me sucedi precisamente por tener versiones diferentes). Cualquier cosa si an no tiene instalado java en ubuntu, o no saben como hacerlo, puede leer esta guia sobre como instalar java en ubuntu, recuerde que debe hacer el mismo procedimiento 2 veces, uno para el JRE, y otro para el JDK. Pero no basta con instalar java, nos falta configurar el javac (que tambin viene en la anterior guia), rmic y rmiregistry. Para realizar lo anterior, debemos abrir un terminal de ubuntu y digitar las siguiente lneas: sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/x/bin/javac" 1

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andres Moreno Jaimes (jamper91) sudo update-alternatives --set javac /usr/lib/jvm/x/bin/javac sudo update-alternatives --install "/usr/bin/rmic" "rmic" "/usr/lib/jvm/x/bin/rmic" 1 sudo update-alternatives --set rmic /usr/lib/jvm/x/bin/rmic sudo update-alternatives --install "/usr/bin/rmiregistry" "rmiregistry" "/usr/lib/jvm/x/bin/rmiregistry" 1 sudo update-alternatives --set rmiregistry /usr/lib/jvm/x/bin/rmiregistry donde x, corresponde a la versin de java que tienes, en mi caso es jdk1.7.0_07 Luego de realizar estos pasos, tambin crearemos un directorio que contendr nuestro archivos, en mi caso cree una carpeta llamada RMI en Documentos

Pasos : Recuerda generar todos los archivos en una misma carpeta Para crear nuestro servidor y cliente RMI, nos basaremos en la guia de chuidiang, as que omitire un poco la explicacin (que la podes encontrar en esa misma gua) sino que complementare un poco el codigo para poder correctamente su funcionamiento. 1. Debemos crear una interfaz que contendr los mtodos que se desean llamar, para eso creamos un archivos llamado InterfaceRemota.java que contendr el siguiente cdigo: import java.rmi.Remote; public interface InterfaceRemota extends Remote { public int suma (int a, int b) throws java.rmi.RemoteException; } 2. Ahora debemos crear el Objeto Remoto, es decir aquel que tenga las funciones que se desean llamar, que por ende implementa la clase anteriormente creada, para eso creamos el archivo ObjetoRemoto.java, que contendr: import java.io.Serializable; import java.rmi.*; import java.rmi.server.*; public class ObjetoRemoto extends UnicastRemoteObject implements InterfaceRemota { public static void main(String args[]) { } public ObjetoRemoto() throws RemoteException { } public int suma(int a, int b)

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andres Moreno Jaimes (jamper91) { System.out.println ("sumando " + a + " + " + b + "..."); return a+b; } } 3. Despus de haber creado los archivos, debemos compilarlos para que genere los .class respectivo, para eso debemos ejecutar el comando javac + nombreClase.java, en nuestro caso debemos abrir un terminal de ubuntu, dirigirnos a la carpeta donde se encuentren los archivos, y digitar: sudo javac InterfaceRemota.java sudo javac ObjetoRemoto.java Si les llega a generar algn error al momento de compilar, asegurate de haber seguido correctamente la zona de Requerimientos. 4. Ahora debemos generar los stubs (que nos ahorrarn un problema con el envio de mensajes en la red), para eso debemos primero decirle a java donde se encuentra el ObjetoRemoto.java para eso editamos el classpath java -cp + ruta + objeto, como en mi caso estoy trabajando en /home/jamper91/Documentos/RMI la linea quedaria: java -cp /home/jamper91/Documentos/ ObjetoRemoto Nota que hay un espacio en blanco entre la ruta y el nombre del objeto, lo siguiente es generar los stubs, para eso: rmic ObjetoRemoto 5. El siguiente paso es correr rmiregistry digitando en el terminal, pero primero borrando el classpath (por seguridad): unset CLASSPATH rmiregistry 6. Ahora debemos crear nuestra clase que ser el servidor RMI, quien se encargara de registrar el objeto remoto en nuestro servidor, para eso creamos un archivo llamado Servidor.java que contendr el siguiente cdigo: import java.rmi.*; import java.rmi.server.*; public class Servidor { public static void main (String args[]) { try { System.setProperty ("java.rmi.server.codebase", "file:/home/ jamper91/Documentos/RMI"); ObjetoRemoto objetoRemoto = new ObjetoRemoto(); Naming.rebind("ObjetoRemoto", objetoRemoto); }catch(Exception e){ System.out.println("Error:"+e.toString()); }

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andres Moreno Jaimes (jamper91) } La parte que se encuentra en rojo, es la ruta donde se encuentra nuestro objeto, deben cambiarla por vuestra ruta. En esta linea Naming.rebind("ObjetoRemoto", objetoRemoto); registrando el objeto en el servidor, nota que se registra con el nombre ObjetoRemoto, con ese nombre es que lo deberas buscar desde el cliente 7. Ya teniendo nuestro servidor, debemos crear nuestro cliente, para ellos creamos un archivo llamado Cliente.java con el siguiente cdigo: import java.rmi.*; import java.rmi.server.*; public class Cliente { public static void main (String args[]) { try { InterfaceRemota objetoRemoto = (InterfaceRemota) Naming.lookup ("//localhost/ObjetoRemoto"); System.out.print ("2 + 3 = "); System.out.println (objetoRemoto.suma(2, 3)); }catch(Exception e){ System.out.print("Error:"+e.toString()); } } } Como veran, aqui en este caso se crea el objeto remoto dicindole la ip donde se encuentra(localhost en este caso) ms el nombre como fue registrado el objeto en el servidor (ObjetoRemoto en este caso), y el resto es normal, simplemente llamas al mtodos del objeto pasandole los parametros necesarios y listo. Ejecucin: Para poder ejecutar el ejemplos debemos compilar el Cliente, y el Servidor con las siguientes lneas: javac Servidor.java javac Cliente.java Lo siguiente ser iniciar rmiregistry en nuestra mquina, digitando el siguiente comando rmiregistry A continuacin ejecutamos el servidor escribiendo: sudo java Servidor E iniciar el cliente sudo java Cliente

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Potrebbero piacerti anche