public interface Registry extends Remote
Registry
是一个简单的远程对象注册表的远程接口,提供了用于存储和检索与任意字符串名称绑定的远程对象引用的方法。
该bind
, unbind
和rebind
方法用于改变注册表中的名称绑定,以及lookup
种list
方法用于查询当前的名称绑定。
在其典型用法中, Registry
启用RMI客户端引导:它为客户端获取对远程对象的初始引用提供了一种简单的方法。 因此,注册表的远程对象实现通常以公知的地址导出,例如使用众所周知的ObjID
和TCP端口号(默认为1099
)。
所述LocateRegistry
类提供了一种构建的自举参照的编程API Registry
在远程地址(见静态getRegistry
方法)和用于创建和导出Registry
上特定的本地地址中的当前VM(见静态createRegistry
方法)。
Registry
实现可以选择限制对其一些或全部方法的访问(例如,将注册表的绑定变异的方法可能被限制为来自本地主机的呼叫)。 如果Registry
方法选择拒绝给定调用的访问,则其实现可能会抛出AccessException
(由于扩展RemoteException
)将被远程客户端捕获时封装在ServerException
中 。
在Registry
中用于绑定的名称是纯字符串,不会解析。 在Registry中存储其远程引用的Registry
可能希望在名称绑定中使用包名作为前缀,以减少注册表中名称冲突的可能性。
LocateRegistry
Modifier and Type | Field and Description |
---|---|
static int |
REGISTRY_PORT
众所周知的注册端口。
|
Modifier and Type | Method and Description |
---|---|
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
- 如果与注册表的远程通信失败;
如果异常是包含ServerException
的AccessException
,则注册表会拒绝主叫方访问以执行此操作
AccessException
- 如果此注册表是本地注册表,并且拒绝来电者访问以执行此操作
NullPointerException
- 如果
name
是
null
void bind(String name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException
name
的远程引用。
name
- 与远程引用关联的名称
obj
- 对远程对象的引用(通常是存根)
AlreadyBoundException
- 如果
name
已经绑定
RemoteException
- 如果与注册表的远程通信失败;
如果异常是包含ServerException
的AccessException
,则注册表拒绝主叫方访问来执行此操作(例如,源自非本地主机)
AccessException
- 如果此注册表是本地注册表,并且拒绝主叫方访问以执行此操作
NullPointerException
- 如果
name
是
null
,或者如果
obj
是
null
void unbind(String name) throws RemoteException, NotBoundException, AccessException
name
此注册表。
name
- 要删除的绑定的名称
NotBoundException
- 如果
name
当前未绑定
RemoteException
- 如果与注册表的远程通信失败;
如果异常是包含ServerException
的AccessException
,则注册表拒绝主叫方访问来执行此操作(例如,源自非本地主机)
AccessException
- 如果此注册表是本地注册表,并且拒绝来电者访问以执行此操作
NullPointerException
- 如果
name
是
null
void rebind(String name, Remote obj) throws RemoteException, AccessException
name
在此注册表与所提供的远程引用。
如果存在现有的规定结合name
,将其丢弃。
name
- 与远程引用关联的名称
obj
- 对远程对象的引用(通常是存根)
RemoteException
- 如果与注册表的远程通信失败;
如果异常是包含ServerException
的AccessException
,则注册表拒绝主叫方访问来执行此操作(例如,源自非本地主机)
AccessException
- 如果此注册表是本地注册表,并且拒绝来电者访问以执行此操作
NullPointerException
- 如果
name
是
null
,或者如果
obj
是
null
String[] list() throws RemoteException, AccessException
RemoteException
- 如果与注册表的远程通信失败;
如果异常是包含ServerException
的AccessException
,则注册表拒绝主叫方访问以执行此操作
AccessException
- 如果此注册表是本地注册表,并拒绝主叫方访问执行此操作