public interface Registry
Registry
是简单远程对象注册表的一个远程接口,它提供存储和获取绑定了任意字符串名称的远程对象引用的方法。bind
、unbind
和 rebind
方法用于改变注册表中的名称绑定,lookup
和 list
方法用于查询当前的名称绑定。
在其典型用法中,Registry
启用 RMI 客户机引导:它为客户机提供获得对远程对象的初始引用的简单方式。因此,导出的注册表的远程对象实现通常具有已知的地址,如具有已知的 ObjID
和 TCP 端口号(默认为 1099
)。
LocateRegistry
类提供的一个可编程的 API,以便构造对远程地址上的 Registry
的引导引用(请参阅静态 getRegistry
方法),以及在当前 VM 所在的特定本地地址创建和导出 Registry
(请参阅静态 createRegistry
方法)。
Registry
实现可以选择限制对其中的某些或全部方法的访问(例如,可以限制改变注册表绑定的方法来限制对本地主机发起的调用)。如果 Registry
方法选择拒绝对给定调用的访问,则其实现可能抛出 AccessException
,抛出的这一异常(因为它扩展 RemoteException
)可能会在远程客户端捕获它时包装在 ServerException
中。
在 Registry
中用于绑定的名称是纯字符串,不是经过分析的。在 Registry
中存储其远程引用的服务可能希望将包名称用作名称绑定中的前缀,以减少注册表中可能的名称冲突。
LocateRegistry
字段摘要 | |
---|---|
static int |
REGISTRY_PORT 已知的注册表端口。 |
方法摘要 | |
---|---|
void |
bind(String name, Remote obj) 绑定对此注册表中指定 name 的远程引用。 |
String[] |
list() 返回在此注册表中绑定的名称的数组。 |
Remote |
lookup(String name) 返回注册表中绑定到指定 name 的远程引用。 |
void |
rebind(String name, Remote obj) 用提供的远程引用替换此注册表中指定的 name 绑定。 |
void |
unbind(String name) 移除此注册表中指定的 name 绑定。 |
字段详细信息 |
---|
static final int REGISTRY_PORT
方法详细信息 |
---|
Remote lookup(String name) throws RemoteException, NotBoundException, AccessException
name
的远程引用。
name
- 要查找的远程引用的名称
NotBoundException
- 如果当前未绑定
name
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含
AccessException
的
ServerException
,则注册表拒绝调用方对执行此操作的访问。
AccessException
- 如果此注册表是本地的,并且它拒绝调用方对执行此操作的访问
NullPointerException
- 如果
name
为
null
void bind(String name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException
name
的远程引用。
name
- 与该远程引用相关的名称
obj
- 对远程对象(通常是一个 stub)的引用
AlreadyBoundException
- 如果已经绑定了
name
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含
AccessException
的
ServerException
,则注册表拒绝调用方对执行此操作的访问(例如,发起的操作来自非本地主机)
AccessException
- 如果此注册表是本地的,并且它拒绝调用方对执行此操作的访问
NullPointerException
- 如果
name
为
null
,或者如果
obj
为
null
void unbind(String name) throws RemoteException, NotBoundException, AccessException
name
绑定。
name
- 要移除的绑定名称
NotBoundException
- 如果当前未绑定
name
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含
AccessException
的
ServerException
,则注册表拒绝调用方对执行此操作的访问(例如,发起的操作来自非本地主机)
AccessException
- 如果此注册表是本地的,并且它拒绝调用方对执行此操作的访问
NullPointerException
- 如果
name
为
null
void rebind(String name, Remote obj) throws RemoteException, AccessException
name
绑定。如果存在指定
name
的现有绑定,则会丢弃此现有的绑定。
name
- 与该远程引用相关的名称
obj
- 对远程对象(通常是一个 stub)的引用
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含
AccessException
的
ServerException
,则注册表拒绝调用方对执行此操作的访问(例如,发起的操作来自非本地主机)
AccessException
- 如果此注册表是本地的,并且它拒绝调用方对执行此操作的访问
NullPointerException
- 如果
name
为
null
,或者如果
obj
为
null
String[] list() throws RemoteException, AccessException
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含
AccessException
的
ServerException
,则注册表拒绝调用方对执行此操作的访问。
AccessException
- 如果此注册表是本地的,并且它拒绝调用方对执行此操作的访问