当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.rmi.Naming用法及代码示例


Java.rmi.Naming 类包含用于将名称与远程注册表中存在的远程对象绑定、取消绑定或重新绑定的方法。此类还用于获取远程注册表中存在的对象的引用或与此注册表关联的名称列表。

用法:类声明

public final class Naming extends Object

让我们讨论一下这个类的一些主要方法,如下:

最常用的方法如下所述:

  1. bind()
  2. list()
  3. lookup()
  4. rebind()
  5. unbind()

方法一:bind()

用法:

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

Parameters: 远程注册表名称

Exceptions:

  1. AlreadyBoundException 在名称已被绑定时发生
  2. URL Class当格式为 名称不是 URL
  3. 当与远程注册表的联系失败时发生RemoteException
  4. 当不允许访问此操作时发生AccessException

方法二: list() 用于获取 与注册表关联的名称列表

用法:

static string[] list(String name)

Parameters: 远程注册表的名称

Return Type: 与此注册表绑定的名称数组

异常:

  1. 当名称格式不是 URL 时,会出现MalformedURLException
  2. 当与远程注册表的联系失败时,会发生RemoteException

方法三: lookup()查找与该名称关联的远程对象的引用

用法:

static remote lookup(String name)

Parameters: 远程注册表的名称

Return Type: 远程对象的引用

例外情况:

  1. NotBoundException 当名称未与当前操作绑定时出现
  2. 当与远程注册表的联系失败时发生RemoteException
  3. 当不允许访问此操作时发生AccessException
  4. 当名称格式不是 URL 时出现MalformedURLException

方法4:rebind()方法将此名称与关联的远程对象重新绑定

用法:

static void rebind(String name, remote object)

Parameters: 它有两个参数,即名称和对象。

  • 远程注册表的名称
  • 与名称关联的远程对象

异常:

  1. 当名称格式不是 URL 时出现MalformedURLException
  2. 当与远程注册表的联系失败时发生RemoteException
  3. 当不允许访问此操作时发生AccessException

方法五: unbind()解除该名称与关联远程对象的绑定

用法:

static void unbind(String name) 

参数:远程注册表的名称

Exceptions:

  1. NotBoundException 当名称未与当前操作绑定时出现
  2. 当名称格式不是 URL 时出现MalformedURLException
  3. 当与远程注册表的联系失败时发生RemoteException
  4. 当不允许访问此操作时发生AccessException

示例 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());
        }
    }
}

输出:

registry created successfully

实现:Java程序寻找对象(客户端)

示例 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) {
        }
    }
}

输出:

GeeksForGeeks


相关用法


注:本文由纯净天空筛选整理自abhinavjain194大神的英文原创作品 java.rmi.Naming Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。