0% encontró este documento útil (0 votos)
123 vistas9 páginas

RMI (Java Remote Method Invocation)

RMI (Java Remote Method Invocation) permite invocar métodos de objetos de manera remota, ofreciendo un mecanismo simple para comunicación entre servidores en aplicaciones Java distribuidas. RMI utiliza serialización de objetos, recolección de basura distribuida y soporte para tipos arbitrarios. Los clientes pueden conectarse a objetos remotos publicados y llamar a sus métodos de forma remota.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
123 vistas9 páginas

RMI (Java Remote Method Invocation)

RMI (Java Remote Method Invocation) permite invocar métodos de objetos de manera remota, ofreciendo un mecanismo simple para comunicación entre servidores en aplicaciones Java distribuidas. RMI utiliza serialización de objetos, recolección de basura distribuida y soporte para tipos arbitrarios. Los clientes pueden conectarse a objetos remotos publicados y llamar a sus métodos de forma remota.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

RMI

RMI (Java Remote Method Invocation)


es un mecanismo ofrecido por Java para invocar un mtodo
de manera remota.
Forma parte del entorno estndar de ejecucin de Java y
proporciona un mecanismo simple para la comunicacin de
servidores en aplicaciones distribuidas basadas
exclusivamente en Java.
Si se requiere comunicacin entre otras tecnologas debe
utilizarse CORBA o SOAP en lugar de RMI.

RMI - Ing. Orlando Pihue Montoya

RMI
RMI se caracteriza por la facilidad de su uso en la
programacin por estar especficamente diseado
para Java; proporciona paso de objetos por
referencia (no permitido por SOAP),
recoleccin de basura distribuida (Garbage
Collector distribuido) y paso de tipos arbitrarios
(funcionalidad no provista por CORBA).

RMI - Ing. Orlando Pihue Montoya

RMI
A travs de RMI, un programa Java puede exportar un
objeto, con lo que dicho objeto estar accesible a travs
de la red y el programa permanece a la espera de
peticiones en un puerto TCP. A partir de ese momento, un
cliente puede conectarse e invocar los mtodos
proporcionados por el objeto.

RMI - Ing. Orlando Pihue Montoya

Invocacin RMI
La invocacin se compone de los siguientes pasos:
Encapsulado de los parmetros (utilizando la funcionalidad
de serializacin de Java).
Invocacin del mtodo (del cliente sobre el servidor). El
invocador se queda esperando una respuesta.
Al terminar la ejecucin, el servidor serializa el valor de
retorno (si lo hay) y lo enva al cliente.
El cdigo cliente recibe la respuesta y contina como si la
invocacin hubiera sido local.

RMI - Ing. Orlando Pihue Montoya

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
La interfaz debe ser pblica.
Debe heredar de la interfaz java.rmi.Remote, para indicar que
puede llamarse desde cualquier mquina virtual Java.
Cada mtodo remoto debe lanzar la excepcin
java.rmi.RemoteException en su clusula throws, adems de las
excepciones que pueda manejar.

RMI - Ing. Orlando Pihue Montoya

Ejemplo
public interface MiInterfazRemota extends java.rmi.Remote
{
public void miMetodo1() throws java.rmi.RemoteException;
public int miMetodo2() throws java.rmi.RemoteException;
}

Implementar la interfaz remota


public class MiClaseRemota extends java.rmi.server.UnicastRemoteObject implements MiInterfazRemota {
public MiClaseRemota() throws java.rmi.RemoteException
{ // Cdigo del constructor }
public void miMetodo1() throws java.rmi.RemoteException {
// Aqu ponemos el cdigo que queramos
System.out.println("Estoy en miMetodo1()");
}
public int miMetodo2() throws java.rmi.RemoteException {
return 5; // Aqu ponemos el cdigo que queramos
}
public void otroMetodo() {
// Si definimos otro mtodo, ste no podra llamarse // remotamente al no ser de la interfaz remota
}
public static void main(String[] args) {
try {
MiInterfazRemota mir = new MiClaseRemota();
java.rmi.Naming.rebind("//" + java.net.InetAddress.getLocalHost().getHostAddress() + ":" + args[0] +
"/PruebaRMI", mir);
} catch (Exception e) {
}
}
}

RMI - Ing. Orlando Pihue Montoya

set CLASSPATH=%CLASSPATH%;.\objRemotos.jar;.
javac MiClaseRemota.java
rmic -d . MiClaseRemota
En el caso de Windows, se debe ejecutar:
start rmiregistry 1234
Y en el caso de Linux:
rmiregistry &

Por ltimo, se lanza el servidor:


java -Djava.rmi.server.hostname=127.0.0.1 MiClaseRemota 1234

RMI - Ing. Orlando Pihue Montoya

Crear un cliente RMI


public class MiClienteRMI {
private MiClienteRMI(){};
public static void main(String[] args) {
try {
MiInterfazRemota mir =
(MiInterfazRemota)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();
}
}
}

Una vez que ya tenemos definido el cliente, para compilarlo


hacemos:
set CLASSPATH=%CLASSPATH%;.\objRemotos.jar;.
javac MiClienteRMI.java
Luego, para ejecutar el cliente hacemos:
java MiClienteRMI 127.0.0.1 1234
RMI - Ing. Orlando Pihue Montoya

Resultado

RMI - Ing. Orlando Pihue Montoya

También podría gustarte