Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo de desarrollo de
un servicio de calculadora
sobre RMI
1
Diseño del servicio
• Se aplica el patrón de distribución proxy a partir del
servicio existente (local) y la definición de una
interfaz
Cliente
ICalculadora
Calculadora
2
Diseño del servicio
• Se crean las implementaciones necesarias y el
servidor que distribuye el objeto remoto
rmiRegistry Servidor
Cliente CalculadoraImpl
ObjetoRemoto
ICalculadora
Stub
3 RMI
Objeto a distribuir
public class Calculadora {
4
Declaración de la interfaz remota
import java.rmi.*;
5
Implementación objeto remoto
import java.rmi.*;
public class CalculadoraImpl implements ICalculadora{
6
Implementación servidor
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
8
Implementación cliente
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Cliente {
public static void main(String[] args) {
try {
Registry registry =
LocateRegistry.getRegistry("localhost");
ICalculadora stub =
(ICalculadora)registry.lookup("calculadora");
double respuesta = stub.sumar(3, 5);
System.out.println ("Respuesta suma: "+respuesta);
respuesta = stub.multiplicar(3, 5);
System.out.println ("Respuesta multiplicación:
"+respuesta);
}catch (Exception e) {
System.out.println ("Client error: "+e.toString());
e.printStackTrace();
9 } }}
Ejecución del servicio
1. Ejecutar el servicio de nombres (desde el mismo
directorio donde se encuentre el servidor)
start rmiregistry
2. Ejecutar el servidor
start java Server (nombre de la clase del
servidor)
3. Invocar el cliente
java Cliente
10
Documentación
• https://docs.oracle.com/en/java/javase/15/docs/sp
ecs/rmi/index.html
• https://docs.oracle.com/javase/tutorial/rmi/index.
html
• https://docs.oracle.com/en/java/javase/15/docs/sp
ecs/man/rmiregistry.html
• https://docs.oracle.com/en/java/javase/15/docs/a
pi/java.rmi/java/rmi/package-summary.html
11