Calculadora usando RMI (invocación de método remoto) en Java

RMI (Invocación de método remoto) es una API utilizada para acceder a objetos que se ejecutan en otro lado de JVMServer. Se utiliza principalmente para la creación de sistemas distribuidos y se proporciona en Java Rome. Stub y Skeleton son los dos objetos utilizados para manejar la comunicación entre el cliente y el servidor. La siguiente figura muestra una descripción general de RMI.

Trabajo de RMI

Aquí,

  • Objeto stub: El objeto stub en la máquina cliente construye un bloque de información y envía esta información al servidor.
  • Objeto esqueleto: el objeto esqueleto pasa la solicitud del objeto stub al objeto remoto. RMI contiene un rmiregistry que contiene todos los objetos del servidor. El servidor vincula todos los objetos al registro y luego el cliente obtiene el objeto del registro respectivo, después de lo cual el cliente invoca los métodos utilizando los objetos obtenidos.

Pasos para crear Calculadora usando RMI 

Paso 1: crear la interfaz remota

Primero, crearemos 4 interfaces (suma, resta, multiplicación, división). Estas interfaces son útiles para la operación. Para crear interfaces remotas necesitamos extender la interfaz remota

AddI.java

// Creating a AddInterface interface
import java.rmi.Remote;
public interface AddInterface extends Remote {
    // Declaring the method prototype
    public int add(int x, int y) throws RemoteException;
}

SubI.java

// Creating a SubInterface interface
import java.rmi.Remote;
public interface SubInterface extends Remote {
    // Declaring the method prototype
    public int sub(int x, int y) throws RemoteException;
}

MulI.java

// Creating a MulInterface interface
import java.rmi.Remote;
public interface MulInterface extends Remote {
    // Declaring the method prototype
    public int mul(int x, int y) throws RemoteException;
}

DivI.java

// Creating a DivInterface interface
import java.rmi.Remote;
public interface DivInterface extends Remote {
    // Declaring the method prototype
    public int div(int x, int y) throws RemoteException;
}

Paso 2: Implementación de la interfaz remota

Ahora es el momento de proporcionar implementación a todas las interfaces . el el el

Impl.java

// Java program to implement the AddInterface,
// subInterface, MulInterface, and DivInterface
import java.rmi.*;
import java.rmi.server.*;
  
public class Impl extends UnicastRemoteObject
    implements AddInterface, SubInterface, MulInterface,
               DivInterface {
  
    // Default constructor to throw RemoteException
    // from its parent constructor
    public Impl() throws Exception { super(); }
  
    // Implementation of the AddInterface,
    // subInterface, MulInterface, and DivInterface
    public int add(int x, int y) { return x + y; }
    public int sub(int x, int y) { return x - y; }
    public int mul(int x, int y) { return x * y; }
    public int div(int x, int y) { return x / y; }
}

Paso 3: Cree y ejecute el programa de aplicación del servidor.

la

Server.java

// Program for server application
import java.rmi.*;
import java.rmi.registry.*;
public class Server {
    public static void main(String[] args) throws Exception
    {
  
        // Create an object of the interface
        // implementation class
        Impl obj = new Impl();
  
        // Binds the remote object by the name ADD
        Naming.rebind("ADD", obj);
  
        System.out.println("Server Started");
    }
}

Paso 4: Cree y ejecute el programa de aplicación del cliente.

Client.java

// Program for client application
import java.rmi.*;
import java.util.*;
public class Client {
    public static void main(String[] args) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        while (true) {
            // User Menu
            System.out.println(
                "\n1.Addition\n2.Subtraction\n3.multiplication\n4.division\n5.Exit");
            System.out.println("Enter the option:");
            int opt = sc.nextInt();
            if (opt == 5) {
                break;
            }
            System.out.println(
                "Enter the the first number:");
            int a = sc.nextInt();
            System.out.println("Enter the second number:");
            int b = sc.nextInt();
            int n;
            switch (opt) {
            case 1:
                // lookup method to find reference of remote
                // object
                AddInterface obj
                    = (AddInterface)Naming.lookup("ADD");
                n = obj.add(a, b);
                System.out.println("Addition= " + n);
                break;
            case 2:
                SubInterface obj1
                    = (SubInterface)Naming.lookup("ADD");
                n = obj1.sub(a, b);
                System.out.println("Subtraction= " + n);
                break;
            case 3:
                MulInterface obj2
                    = (MulInterface)Naming.lookup("ADD");
                n = obj2.mul(a, b);
                System.out.println("Multiplication = " + n);
                break;
            case 4:
                DivInterface obj3
                    = (DivInterface)Naming.lookup("ADD");
                n = obj3.div(a, b);
                System.out.println("Division = " + n);
                break;
            }
        }
    }
}

Paso 5: Compilar todo el programa Java

Ahora necesitamos compilar todo el programa java. Para compilar todo el programa java necesitamos abrir el símbolo del sistema e ingresar a la carpeta respectiva. Ahora ingrese a la carpeta donde se almacenan todos los archivos. Podemos compilar todos los archivos a la vez usando el siguiente comando;

javac *.java

Paso 6: Crea un stub y un esqueleto

rmic classname

Paso: 7 Inicie el servicio de registro con la herramienta rmiregistry

Ahora inicie el servicio de registro rmi utilizando la herramienta rmiregistry. Necesitamos especificar el número de puerto. Si no especificamos el número de puerto, usa un número de puerto predeterminado, por ejemplo, estamos usando el número de puerto 5259.

rmiregistry 5259  or  rmiregistry &  or start rmiregistry(windows)

Después de hacer los pasos anteriores correctamente, puede verse así:

Calculator using rmi in java - rmiregistry tool

Salida: después de seguir con éxito los pasos anteriores, puede ver la siguiente salida o cualquier confusión en los pasos anteriores, puede ver el siguiente video

Publicación traducida automáticamente

Artículo escrito por prathameshnirmale y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *