java.rmi.clase de nomenclatura en Java

La clase Java.rmi.Naming contiene un método para vincular, desvincular o volver a vincular nombres con un objeto remoto presente en el registro remoto. Esta clase también se usa para obtener la referencia del objeto presente en registros remotos o la lista de nombres asociados con este registro.

Sintaxis: declaración de clase

public final class Naming extends Object

Analicemos algunos de los principales métodos de esta clase, que son los siguientes:

Los métodos más utilizados se describen a continuación de la siguiente manera:

  1. unir()
  2. lista()
  3. buscar()
  4. reencuadernar()
  5. desatar()

Método 1: enlazar() 

Sintaxis:

static void bind(String name, remote object)
// Bind this name with this remote object

Parámetros: Nombre del registro remoto

Excepciones:

  1. La excepción ReadyBoundException se produce cuando el nombre ya estaba delimitado.
  2. MalformedURLException ocurre cuando el formato del nombre no es una URL
  3. RemoteException ocurre cuando falla el contacto con el registro remoto
  4. AccessException ocurre cuando no se permite el acceso a esta operación

Método 2: list() Usado para obtener la lista de los nombres asociados con el registro

Sintaxis:

static string[] list(String name)

Parámetros: El nombre del registro remoto

Tipo de retorno: una array de nombres delimitada con este registro

Excepciones:

  1. MalformedURLException ocurre cuando el formato del nombre no es una URL
  2. RemoteException ocurre cuando falla el contacto con el registro remoto

Método 3: lookup() busca la referencia del objeto remoto al que está asociado este nombre

Sintaxis:

static remote lookup(String name)

Parámetros: El nombre del registro remoto

Tipo de retorno: la referencia para un objeto remoto

Excepciones:

  1. NotBoundException ocurre cuando el nombre no se vincula con la operación actual
  2. RemoteException ocurre cuando falla el contacto con el registro remoto
  3. AccessException ocurre cuando no se permite el acceso a esta operación
  4. MalformedURLException ocurre cuando el formato del nombre no es una URL

Método 4: el método rebind() vuelve a vincular este nombre con el objeto remoto asociado

Sintaxis:

static void rebind(String name, remote object)

Parámetros: Se necesitan dos parámetros, a saber, nombre y objeto.

  • El nombre del registro remoto.
  • El objeto remoto a asociar con el nombre

Excepciones:

  1. MalformedURLException ocurre cuando el formato del nombre no es una URL
  2. RemoteException ocurre cuando falla el contacto con el registro remoto
  3. AccessException ocurre cuando no se permite el acceso a esta operación

Método 5: unbind() desvincula este nombre con el objeto remoto asociado

Sintaxis:

static void unbind(String name) 

Parámetros: El nombre del registro remoto

Excepciones:

  1. NotBoundException ocurre cuando el nombre no se vincula con la operación actual
  2. MalformedURLException ocurre cuando el formato del nombre no es una URL
  3. RemoteException ocurre cuando falla el contacto con el registro remoto
  4. AccessException ocurre cuando no se permite el acceso a esta operación

Ejemplo 1:

Java

// Java Program to create a registry
// Server's Side
 
// Importing java.rmi package to enable object of one JVM
// to invoke methods on object in another JVM
import java.rmi.*;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.*;
 
// Interface
// creating remote interface
interface demo extends Remote {
    public String msg(String msg) throws RemoteException;
}
 
// Class 1
// Helper Class
class demoRemote
    extends UnicastRemoteObject implements demo {
    demoRemote() throws RemoteException { super(); }
 
    // @Override
    public String msg(String msg) throws RemoteException
    {
        // Display message only
        System.out.println("GeeksForGeeks");
        return null;
    }
}
 
// Class 2
// Main class
public class GFG_Server {
 
    // Main driver method
    public static void main(String args[])
        throws RemoteException, NotBoundException,
               AlreadyBoundException
    {
 
        // Try block to check for exceptions
        try {
 
            // Creating a new registry by creating
            // an object of Registry class
            Registry registry
                = LocateRegistry.createRegistry(3000);
 
            demo obj = new demoRemote();
 
            // binding obj to remote registry
            Naming.bind("rmi://localhost:3000"
                            + "/geeksforgeeks",
                        (Remote)obj);
 
            // Display message when program
            // is executed successfully
            System.out.println(
                "registry created successfully");
        }
 
        // Catch block to handle the exceptions
        catch (Exception e) {
 
            // Getting the name of the exception using
            // the toString() method over exception object
            System.err.println(e.toString());
        }
    }
}

Producción: 

registry created successfully

Implementación: programa Java para buscar el objeto (lado del cliente)

Ejemplo 2: 

Java

// Java Program to look for the object
// Client Side
 
// Importing java.rmi package to enable object of one JVM
// to invoke methods on object in another JVM
import java.rmi.*;
 
// Main class
public class GFG_Client {
 
    // Main driver method
    public static void main(String args[])
    {
        // try block to check for exceptions
        try {
 
            // Looking for object in remote registry
            demo client = (demo)Naming.lookup(
                "rmi://localhost:3000/obj");
 
            // Print and display the client message
            System.out.println(client.msg());
        }
 
        // Catch block to handle the exception
        catch (Exception e) {
        }
    }
}

Producción: 

GeeksForGeeks

Publicación traducida automáticamente

Artículo escrito por abhinavjain194 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 *