rmi en ubuntu

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 código lo pueden bajar de aqui. Antes de empezar a realizar el manual les traigo unos conceptos: RMI (Invocación remota de métodos) nos permite llamar una funcion de java que no esta en la aplicación actual que se esta desarrollando, es decir me permite llamar un método 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 envío de objetos como parámetros. 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 versión, pues si no tendremos problemas (algo que me sucedió precisamente por tener versiones diferentes). Cualquier cosa si aún 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 también viene en la anterior guia), rmic y rmiregistry. Para realizar lo anterior, debemos abrir un terminal de ubuntu y digitar las siguiente líneas: sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/x/bin/javac" 1 Ejemplos Gratis de C, java y muchos mas ... http :// jamper 91. hostei . com

Upload: jorge-andres-moreno-jaimes

Post on 31-Jul-2015

8.241 views

Category:

Documents


6 download

DESCRIPTION

Guia sobre como realizar RMI en Ubuntu, creando el Cliente y el Servidor RMI, y configurando el servidor RMI

TRANSCRIPT

Page 1: RMI en Ubuntu

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 código lo pueden bajar de aqui. Antes de empezar a realizar el manual les traigo unos conceptos: RMI (Invocación remota de métodos) nos permite llamar una funcion de java que no esta en la aplicación actual que se esta desarrollando, es decir me permite llamar un método 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 envío de objetos como parámetros.

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 versión, pues si no tendremos problemas (algo que me sucedió precisamente por tener versiones diferentes). Cualquier cosa si aún 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 también viene en la anterior guia), rmic y rmiregistry. Para realizar lo anterior, debemos abrir un terminal de ubuntu y digitar las siguiente líneas: 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

Page 2: RMI en Ubuntu

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" 1sudo update-alternatives --set rmic /usr/lib/jvm/x/bin/rmic sudo update-alternatives --install "/usr/bin/rmiregistry" "rmiregistry" "/usr/lib/jvm/x/bin/rmiregistry" 1sudo update-alternatives --set rmiregistry /usr/lib/jvm/x/bin/rmiregistry donde x, corresponde a la versión de java que tienes, en mi caso es jdk1.7.0_07 Luego de realizar estos pasos, también 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 carpetaPara crear nuestro servidor y cliente RMI, nos basaremos en la guia de chuidiang, así que omitire un poco la explicación (que la podes encontrar en esa misma guía) sino que complementare un poco el codigo para poder correctamente su funcionamiento.

1. Debemos crear una interfaz que contendrá los métodos que se desean llamar, para eso creamos un archivos llamado InterfaceRemota.java que contendrá el siguiente código: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

Page 3: RMI en Ubuntu

Jorge Andres Moreno Jaimes (jamper91)

{ System.out.println ("sumando " + a + " + " + b + "..."); return a+b; }

}

3. Después 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.javasudo javac ObjetoRemoto.java

Si les llega a generar algún error al momento de compilar, asegurate de haber seguido correctamente la zona de Requerimientos.

4. Ahora debemos generar los stubs (que nos ahorrarán 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/ ObjetoRemotoNota 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 código: 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

Page 4: RMI en Ubuntu

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 código: 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 diciéndole la ip donde se encuentra(localhost en este caso) más el nombre como fue registrado el objeto en el servidor (ObjetoRemoto en este caso), y el resto es normal, simplemente llamas al métodos del objeto pasandole los parametros necesarios y listo.

Ejecución: Para poder ejecutar el ejemplos debemos compilar el Cliente, y el Servidor con las siguientes líneas:

javac Servidor.javajavac Cliente.java

Lo siguiente será iniciar rmiregistry en nuestra máquina, digitando el siguiente comandormiregistry

A continuación 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