分享
 
 
 

RMI规范--第六章

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

注册服务程序接口

RMI 系统使用 Java.rmi.registry.Registry 接口和 java.rmi.registry.Locat

eRegistry 类来为按名字检索和注册对象提供众所周知的自举服务。

registry 是一种将名字映射到远程对象的远程对象。所有的服务器进程都支持自

己的注册服务程序或能为主机所用的单个注册服务程序。

LocateRegistry 方法用于使注册服务程序在特定的主机中或主机与端口中运行起

来。java.rmi.Naming 类方法用于调用一个远程对象,该对象使用恰当的 Locat

eRegistry.getRegistry 方法来实现 Registry 接口。

主题:

Registry 接口

LocateRegistry 类

RegistryHandler 接口

6.1 Registry 接口

java.rmi.registry.Registry 远程接口可为查询、绑定、再绑定、取消绑定和列

出注册服务程序内容提供方法。java.rmi.Naming 类用 registry 远程接口提供

基于 URL 的命名。

package java.rmi.registry;

public interface Registry extends java.rmi.Remote {

public static final int REGISTRY_PORT = 1099;

public java.rmi.Remote lookup(String name)

throws java.rmi.RemoteException,

java.rmi.NotBoundException, java.rmi.AccessException;

public void bind(String name, java.rmi.Remote obj)

throws java.rmi.RemoteException,

java.rmi.AlreadyBoundException, java.rmi.AccessException;

public void rebind(String name, java.rmi.Remote obj)

throws java.rmi.RemoteException, java.rmi.AccessException;

public void unbind(String name)

throws java.rmi.RemoteException,

java.rmi.NotBoundException, java.rmi.AccessException;

public String[] list()

throws java.rmi.RemoteException, java.rmi.AccessException;

}

REGISTRY_PORT 是注册服务程序的缺省端口。

lookup 方法返回绑定到指定 name 的远程对象,而远程对象则实现一组远程接口

。客户机可将远程对象强制转换为所期望的远程接口类型(该强制类型转换可能

以它在 Java 语言中的常见失败方式而失败)。

bind 方法将 name 与远程对象 obj 相关联。假如名字已绑定到某一对象上,则

抛出 AlreadyBoundExcepton。

rebind 方法将 name 与远程对象 obj 相关联。该名字以前的所有绑定均将被丢

弃。

unbind 方法删除 name 和远程对象 obj 之间的绑定。假如名字并未绑定到某一

对象上,则抛出 NotBoundException。

list 方法返回一个 Strings 数组,其中包含注册服务程序中所绑名字的快照。

该返回值含有注册服务程序内容的快照。

客户机可以使用 LocateRegistry 和 Registry 接口或基于 URL 的 java.rmi.N

aming 类的方法来访问注册服务程序。该注册服务程序仅支持与服务器位于同一

主机的客户机的 bind、unbind 和 rebind。所有主机均可进行查询操作。

.2 LocateRegistry 类

java.rmi.registry.LocateRegistry 类用来获得对特定主机(包括本地主机)的

引导远程对象注册服务程序的引用(创建 stub),或者创建能在特定端口接受调

用的远程对象注册服务程序。

注册服务程序实现将远程对象名(字符串)与远程对象引用相关联的简单命名语

法。服务器重新启动不会记住这些名字和远程对象之间的绑定。

注重,getRegistry 调用并不真正与远程主机连接。它只简单地建立了对远程注

册服务程序的本地引用,且即使远程主机中没有注册服务程序运行也将获得成功

。因此,对于该方法作为返回值返回的远程注册服务程序进行进一步的方法调用

时,可能会导致失败。

package java.rmi.registry;

public final class LocateRegistry

{

public static Registry getRegistry()

throws java.rmi.RemoteException;

public static Registry getRegistry(int port)

throws java.rmi.RemoteException;

public static Registry getRegistry(String host)

throws java.rmi.RemoteException;

public static Registry getRegistry(String host, int port)

throws java.rmi.RemoteException;

public static Registry getRegistry(String host, int port,

RMIClientSocketFactory csf)

throws RemoteException;

public static Registry createRegistry(int port)

throws java.rmi.RemoteException;

public static Registry createRegistry(int port,

RMIClientSocketFactory csf,

RMIServerSocketFactory ssf)

throws RemoteException;

}

前四个 getRegistry 方法返回对当前主机、指定 port 的当前主机、指定的 ho

st 或指定 host 的特定 port 的注册服务程序引用。所返回的是带有指定主机和

端口信息的注册服务程序的远程 stub。

第五个 getRegistry 方法(将 RMIClientSocketFactory 作为参数)返回本地创

建的远程 stub,它对应于指定 host 和 port 上的远程对象 Registry。与用该

方法构造 stub 的远程注册服务程序进行通信时,将使用所提供的 RMIClientSo

cketFactory、csf 来创建到远程主机和端口的注册服务程序的 Socket 连接。

----------------------------------------------------------------------

----------

注重 - 从 getRegistry 方法返回的注册服务程序是含有已知对象标识符的专门

构造的 stub。目前仍不支持将注册服务程序 stub 从一个虚拟机传给另一个虚拟

机(其有效性将取决于实现)。使用 LocateRegistry.getRegistry 方法可以获

得主机的相应注册服务程序。

----------------------------------------------------------------------

----------

createRegistry 方法创建和导出特定 port 的本地主机的注册服务程序。

第二种 createRegistry 方法在与注册服务程序通信时更富有灵活性。该调用将

在本地主机中创建和导出 Registry,本地主机使用自定义套接字工厂用于与注册

服务程序的通信。所创建的注册服务程序在给定的 port 上使用从 RMIServerSo

cketFactory 所创建的 ServerSocket 监听到来请求。接收到注册服务程序引用

的客户机将使用从 RMIClientSocketFactory 所创建的 Socket。

----------------------------------------------------------------------

----------

注重 - 使用 createRegistry 方法启动注册服务程序不能保持服务器进程的活动

性。

6.3 RegistryHandler 接口

----------------------------------------------------------------------

----------

注重 - JDK1.2 中不鼓励使用 RegistryHandler 接口。JDK1.1 中,它仅由 RMI

实现在内部使用,而不能用于应用程序。

----------------------------------------------------------------------

----------

package java.rmi.registry;

public interface RegistryHandler

{

Registry registryStub(String host, int port)

throws java.rmi.RemoteException, java.rmi.UnknownHostException;

Registry registryImpl(int port) throws java.rmi.RemoteException;

}

方法 registryStub 返回一个与位于指定主机和端口的远程注册服务程序进行联

系的 stub。

方法 registryImpl 将构造并导出位于指定的端口的注册服务程序。端口必须为

非零。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有