- 所有超接口:
-
Remote
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
中的服务可能希望在名称绑定中使用包名作为前缀,以减少注册表中名称冲突的可能性。
- 自版本:
- 1.1
- 参见:
-
Field Summary
-
Method Summary
-
Field Details
-
REGISTRY_PORT
static final int REGISTRY_PORT注册表的已知端口。- 参见:
-
-
Method Details
-
lookup
返回绑定到此注册表中指定name
的远程引用。- 参数:
-
name
- 要查找远程引用的名称 - 返回:
- 一个远程对象的引用
- 抛出:
-
NotBoundException
- 如果name
当前未绑定 -
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含AccessException
的ServerException
,则注册表拒绝调用者执行此操作 -
AccessException
- 如果此注册表是本地的并且拒绝调用者执行此操作 -
NullPointerException
- 如果name
为null
-
bind
将远程引用绑定到此注册表中指定的name
。- 参数:
-
name
- 要与远程引用关联的名称 -
obj
- 一个远程对象的引用(通常是一个存根) - 抛出:
-
AlreadyBoundException
- 如果name
已经绑定 -
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含AccessException
的ServerException
,则注册表拒绝调用者执行此操作(例如来自非本地主机) -
AccessException
- 如果此注册表是本地的并且拒绝调用者执行此操作 -
NullPointerException
- 如果name
为null
,或者obj
为null
-
unbind
删除此注册表中指定name
的绑定。- 参数:
-
name
- 要移除绑定的名称 - 抛出:
-
NotBoundException
- 如果name
当前未绑定 -
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含AccessException
的ServerException
,则注册表拒绝调用者执行此操作(例如来自非本地主机) -
AccessException
- 如果此注册表是本地的并且拒绝调用者执行此操作 -
NullPointerException
- 如果name
为null
-
rebind
用提供的远程引用替换此注册表中指定name
的绑定。如果指定name
的绑定已存在,则将其丢弃。- 参数:
-
name
- 要与远程引用关联的名称 -
obj
- 一个远程对象的引用(通常是一个存根) - 抛出:
-
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含AccessException
的ServerException
,则注册表拒绝调用者执行此操作(例如来自非本地主机) -
AccessException
- 如果此注册表是本地的并且拒绝调用者执行此操作 -
NullPointerException
- 如果name
为null
,或者obj
为null
-
list
返回此注册表中绑定的名称数组。该数组将包含在调用此方法时此注册表中绑定的名称的快照。- 返回:
- 此注册表中绑定的名称数组
- 抛出:
-
RemoteException
- 如果与注册表的远程通信失败;如果异常是包含AccessException
的ServerException
,则注册表拒绝调用者执行此操作 -
AccessException
- 如果此注册表是本地的并且拒绝调用者执行此操作
-