Java.rmi.Naming 类包含用于将名称与远程注册表中存在的远程对象绑定、取消绑定或重新绑定的方法。此类还用于获取远程注册表中存在的对象的引用或与此注册表关联的名称列表。
用法:类声明
public final class Naming extends Object
让我们讨论一下这个类的一些主要方法,如下:
最常用的方法如下所述:
- bind()
- list()
- lookup()
- rebind()
- unbind()
方法一:bind()
用法:
static void bind(String name, remote object) // Bind this name with this remote object
Parameters: 远程注册表名称
Exceptions:
- AlreadyBoundException 在名称已被绑定时发生
- URL Class当格式为 名称不是 URL
- 当与远程注册表的联系失败时发生RemoteException
- 当不允许访问此操作时发生AccessException
方法二: list() 用于获取 与注册表关联的名称列表
用法:
static string[] list(String name)
Parameters: 远程注册表的名称
Return Type: 与此注册表绑定的名称数组
异常:
- 当名称格式不是 URL 时,会出现MalformedURLException
- 当与远程注册表的联系失败时,会发生RemoteException
方法三: lookup()查找与该名称关联的远程对象的引用
用法:
static remote lookup(String name)
Parameters: 远程注册表的名称
Return Type: 远程对象的引用
例外情况:
- NotBoundException 当名称未与当前操作绑定时出现
- 当与远程注册表的联系失败时发生RemoteException
- 当不允许访问此操作时发生AccessException
- 当名称格式不是 URL 时出现MalformedURLException
方法4:rebind()方法将此名称与关联的远程对象重新绑定
用法:
static void rebind(String name, remote object)
Parameters: 它有两个参数,即名称和对象。
- 远程注册表的名称
- 与名称关联的远程对象
异常:
- 当名称格式不是 URL 时出现MalformedURLException
- 当与远程注册表的联系失败时发生RemoteException
- 当不允许访问此操作时发生AccessException
方法五: unbind()解除该名称与关联远程对象的绑定
用法:
static void unbind(String name)
参数:远程注册表的名称
Exceptions:
- NotBoundException 当名称未与当前操作绑定时出现
- 当名称格式不是 URL 时出现MalformedURLException
- 当与远程注册表的联系失败时发生RemoteException
- 当不允许访问此操作时发生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
相关用法
- Java java.rmi.MarshalledObject用法及代码示例
- Java java.rmi.RMISecurityManager用法及代码示例
- Java java.io.BufferedInputStream.mark()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getAnnotation()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getAnnotations()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getDeclaredAnnotations()用法及代码示例
- Java java.lang.reflect.AccessibleObject.isAccessible()用法及代码示例
- Java java.lang.reflect.AccessibleObject.setAccessible()用法及代码示例
- Java java.lang.reflect.Array.get()用法及代码示例
- Java java.lang.reflect.Array.getBoolean()用法及代码示例
- Java java.lang.reflect.Array.getByte()用法及代码示例
- Java java.lang.reflect.Array.getChar()用法及代码示例
- Java java.lang.reflect.Array.getDouble()用法及代码示例
- Java java.lang.reflect.Array.getFloat()用法及代码示例
- Java java.lang.reflect.Array.getInt()用法及代码示例
- Java java.lang.reflect.Array.getLength()用法及代码示例
- Java java.lang.reflect.Array.getLong()用法及代码示例
- Java java.lang.reflect.Array.getShort()用法及代码示例
- Java java.lang.reflect.Array.newInstance()用法及代码示例
- Java java.lang.reflect.Array.set()用法及代码示例
- Java java.lang.reflect.Array.setBoolean()用法及代码示例
- Java java.lang.reflect.Array.setByte()用法及代码示例
- Java java.lang.reflect.Array.setChar()用法及代码示例
- Java java.lang.reflect.Array.setDouble()用法及代码示例
- Java java.lang.reflect.Array.setFloat()用法及代码示例
注:本文由纯净天空筛选整理自abhinavjain194大神的英文原创作品 java.rmi.Naming Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。