`
huxiaojun_198213
  • 浏览: 102278 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

RMI规范--第六章

    博客分类:
  • RMI
阅读更多
注册服务程序接口

RMI 系统使用 java.rmi.registry.Registry 接口和 java.rmi.registry.LocateRegistry 类来为按名字检索和注册对象提供众所周知的引导服务。

registry 是一种将名字映射到远程对象的远程对象。所有的服务器进程都支持自己的注册服务程序或能为主机所用的单个注册服务程序。

LocateRegistry 方法用于使注册服务程序在特定的主机中或主机与端口中进行与注册相关的操作。

java.rmi.Naming 类方法用于调用一个远程对象,该对象使用恰当的 LocateRegistry.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.Naming 类的方法来访问注册服务程序。

该注册服务程序仅支持与服务器位于同一主机的客户机的 bind、unbind 和 rebind。所有主机均可进行查询操作。

6.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 的当前主机、指定的 host 或指定 host 的特定 port 的注册服务程序引用。

所返回的是带有指定主机和端口信息的注册服务程序的远程 stub。

第五个 getRegistry 方法(将 RMIClientSocketFactory 作为参数)返回本地创建的远程 stub,它对应于指定 host 和 port 上的远程对象 Registry。

与用该方法构造 stub 的远程注册服务程序进行通信时,将使用所提供的 RMIClientSocketFactory、csf 来创建到远程主机和端口的注册服务程序的 Socket 连接。
----------------------------------------------------------------------
----------
注意 - 从 getRegistry 方法返回的注册服务程序是含有已知对象标识符的专门构造的 stub。

目前仍不支持将注册服务程序 stub 从一个虚拟机传给另一个虚拟机(其有效性将取决于实现)。使用 LocateRegistry.getRegistry 方法可以获得主机的相应注册服务程序。
----------------------------------------------------------------------
----------
createRegistry 方法创建和导出特定 port 的本地主机的注册服务程序。

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

该调用将在本地主机中创建和导出 Registry,本地主机使用自定义套接字工厂用于与注册服务程序的通信。

所创建的注册服务程序在给定的 port 上使用从 RMIServerSocketFactory 所创建的 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 将构造并导出位于指定的端口的注册服务程序。端口必须为非零。  
分享到:
评论

相关推荐

    TongWeb5.0快速使用手册

    #### 第6章 TongWeb常见维护问题 - 最后一章针对TongWeb日常维护中可能遇到的典型问题进行了归纳总结,并提供了具体的解决方案。 - 如日志文件清理、web.xml更新不生效、安装报错、启动异常、端口冲突、JSP更新无效...

    第15章 复习的重点和内容课件

    本复习资料主要针对第15章的内容,涵盖了分布式程序设计的期末考试重点,主要包括Java EE的基本概念和体系结构、JSF开发以及EJB应用的基础知识。复习内容详细列举了可能出现在考试中的题型,如判断题、选择题、填空...

    JMX1.4 规范 翻译 第一章(介绍)(至1.6节)

    Java Management Extensions(JMX)1.4规范是Java平台中用于管理系统和应用程序的重要技术。它提供了管理和监控Java应用程序、设备和服务的标准框架。本章节主要介绍了JMX的基本概念、架构以及核心组件。 ### 1. ...

    JAVA编程技术教学大纲.

    ### 第6章 Java用户界面类和Applet - **内容概览**:涉及AWT和Swing生成GUI界面、Java Applet的设计与实现。 - **教学要求**:学生应理解并掌握图形化用户界面的设计。 - **重点与难点**:重点在于AWT和Swing的使用...

    JSP高级编程(全)

    第6 章 JSP 与XML 联合开发技术 6.1 XML 与JSP 技术联合 6.2 在JSP 中应用XML 6.3 javax.servlet.jsp.tagext 包介绍 6.4 Tag Library 开发与应用实例 6.5 本章小结 第7 章 典型Tag Library 介绍JRun Tag Library 7.1...

    Java网络高级编程

    第6章内容是JSP技术,JSP即JavaServer Pages,是一种允许开发者将Java代码嵌入到HTML页面中去的服务器端技术,它可以简化动态网页的开发。 第7至9章主要介绍Web技术,第7章详细讲解了Servlet技术,Servlet是一种在...

    Thinking in Java 中文第四版+习题答案

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8...

    java课堂笔记_自己总结的

    #### 第一章 SQL Server 基本操作 ##### SQL Server 操作须知 1. **安装路径**: 安装文件及其安装路径都不能包含中文字符,否则可能会导致安装失败或出现其他错误。 2. **版本有效期**: 如果安装后一段时间内能够...

    中间件技术及应用考试复习重点

    #### 第一章 中间件产生背景与分布式环境 ##### 一、中间件的基本概念 1. **中间件定义**:中间件是位于系统软件(如操作系统和网络软件)与应用软件之间的一种软件层。它的主要功能是使不同的应用软件能够跨越...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    Think in Java(中文版)chm格式

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 ...

    Java初学者入门教学

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    JAVA_Thinking in Java

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    ThinkInJava

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    java 编程入门思考

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    thinkinjava

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    Thinking in Java简体中文(全)

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    java联想(中文)

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7 上溯造型 6.7.1 何谓...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    第六章 Log4j使用指南 6.1 Log4j介绍 6.1.1 Log4j历史 6.1.2 Log4j组成 6.2 建立Log4j的开发环境 6.2.1 下载Log4j 6.2.2 配置Log4j 6.3 Log4j的使用方法 6.3.1 配置Log4j 6.3.2 配置根Logger 6.3.3 指定日志输出位置...

Global site tag (gtag.js) - Google Analytics