第3章 RMI及RMI-IIOP

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RMI程序编写步骤
1、 编写并且编译接口的Java代码 2、 编写并且编译接口实现的Java代码。 3、 编写客户端程序 4、 编写绑定服务的程序代码。 5、运行客户端程序
3.2 RMI原理及应用 原理及应用
3.2.4
远程方法调用实例---生成主键(RMI-IIOP) 远程方法调用实例---生成主键(RMI-IIOP) ---生成主键
(2)远程方法参数传递惯例 )
参数传递惯例 调用方法时,传递的参数为值传递。 调用方法时,传递的参数为值传递。当通 RMI调用方法时 调用方法时, 过RMI调用方法时,所有给远程方法的参数是 按值传递的。 按值传递的。 这意味着,当调用目标方法时, 这意味着,当调用目标方法时,所有的参 数从一个机器拷贝到另一个机器。 数从一个机器拷贝到另一个机器。 为什么不能是传引用呢? 为什么不能是传引用呢?一个机器的内存 地址结构,不会与另一个机器的完全相同。 地址结构,不会与另一个机器的完全相同。目 标机器中相应地址, 标机器中相应地址,不会正好存在这个被引用 的对象。 的对象。
该例回答以下三个问题: 该例回答以下三个问题: 远程对象组成;(代码) ;(代码 ●远程对象组成;(代码) 远程对象的绑定操作。(图示+代码) 。(图示 ●远程对象的绑定操作。(图示+代码) 客户查找并调用远程对象。(图示+代码) 。(图示 ●客户查找并调用远程对象。(图示+代码)
3.2 RMI原理及应用 原理及应用
指代的理解:提供高层互操作的程序模块, 指代的理解:提供高层互操作的程序模块, 但不包含任何 业务逻辑. 业务逻辑.
3.2 RMI原理及应位。 定位。 定位 客户知道对方服务的名字,但如何找到对方的物理位置呢? 指代中还应包含关于服务器的位置信息 位置信息. 位置信息 IP 位置信息:如对方的IP地址、端口号、标识等。 位置信息 位置信息怎么来的?谁提供给它的呢? 通过查找得到。 若能查找到,服务体必须先注册,注册即是绑定。 ◆服务体绑定: 绑定:将一个名字与一个具体的对象关联起来的操作。 绑定
max
main 指令
...
max
...
函数编译时,被分配给一个入口地址, 函数编译时,被分配给一个入口地址, 函数名代表函数的入口地址. 函数名代表函数的入口地址.
表3-1 单机环境与网络环境方法调用对照表
单机环境 调用者与被调用者 在同一地址空间
网络环境 在不同地址空间
关联 定位被调用者 输入、 输入、输出参数传递
3.2 RMI原理及应用 3.2.4 远程方法调用实例---生成主键
1. 构建远程对象
远程对象组成: 远程对象组成: 接口:用于暴露对象的信息。 接口:用于暴露对象的信息。
实现:具体实现功能的程序代码。 实现:具体实现功能的程序代码。
3.2 RMI原理及应用 3.2.4 远程方法调用实例---生成主键 ◆远程接口 ---- IPKGenerator.java import java.rmi.Remote; import java.rmi.RemoteException; public interface IPKGenerator extends Remote {
指针 指针---本机的地 指针---本机的地 --址数据 值传递或引用传递
? ? ?
3.2 RMI原理及应用 原理及应用
3.2.3 网络环境的远程方法调用
client
Remote Interface
RemoteObject
Remote Interface
stub Network
skeleton
图3-2 指代和骨架
远程方法调用实例-----生成主键 3.2.4 远程方法调用实例---生成主键
该例回答以下三个问题: 该例回答以下三个问题: 远程对象组成; 代码) ●远程对象组成;(代码) 远程对象的绑定操作。(图示+代码) 。(图示 ●远程对象的绑定操作。(图示+代码) 客户查找并调用远程对象。(图示+代码) 。(图示 ●客户查找并调用远程对象。(图示+代码)
3.2 RMI原理及应用 原理及应用
3.2.3 网络环境的远程方法调用
表3-2 单机环境与网络环境方法调用对照表
单机环境
网络环境
调用者与被调用者
在同一地址空间
在不同地址空间
关联
指针
指代
定位被调用者 输入、 输入、输出参数传递
指针----地址数据 指针----地址数据 ---值传递或引用传递
绑定和指代 值传递
美 国
中 国
交给 结果 沟通 沟通 大 使 结果
图3-3 指代和骨架调用举例
结果
外 交 部
3.2 RMI原理及应用 原理及应用
3.2.3 网络环境的远程方法调用
1.指代的定义: 1.指代的定义: 指代的定义 指代:类似于传统的指针,但能跨越节点定位, 指代:类似于传统的指针,但能跨越节点定位, 同时,又类似于日常生活中的代理,各取一字, 同时,又类似于日常生活中的代理,各取一字, 取名为指代。 取名为指代。
3.2 RMI原理及应用 原理及应用
3.2.2 单机环境的过程调用
解决以下几个问题: 解决以下几个问题: 如何在调用者与被调用者之间建立关联? 如何在调用者与被调用者之间建立关联? 如何定位被调用者? 如何定位被调用者? 如何传递输入参数、 如何传递输入参数、输出参数等 ?
例:C语言程序 :C语言程序 main() main { … c=max(a, b); … } max(int x,int y) { …… }
3.2 RMI原理及应用 3.2.4 远程方法调用实例---生成主键
构建实例的支持技术----RMI----RMI 3. 构建实例的支持技术----RMI-IIOP RMI与 RMI-IIOP的关系 ◆ RMI与Java RMI-IIOP的关系 (1)RMI: 是一种J2SE中的底层的协议。 J2SE中的底层的协议 (1)RMI: 是一种J2SE中的底层的协议。 RMI-IIOP: (2)Java RMI-IIOP: (Java Remote Method Invocation over the InterProtocol,简称Java RMI-IIOP) Internet Inter-ORB Protocol,简称Java RMI-IIOP) 中文含义基于internet ORB间协议(IIOP) 的Java远程 中文含义基于internet ORB间协议(IIOP) Java远程 间协议 方法调用。 方法调用。 CORBA的IIOP协议与Java的RMI协议嫁接的产物 协议与Java 协议嫁接的产物, 将CORBA的IIOP协议与Java的RMI协议嫁接的产物, J2EE平台的事实标准 平台的事实标准。 是J2EE平台的事实标准。
第三章 软件互操作
3.1 基于TCP/IP的通信过程 3.2 RMI原理及应用 3.3 互操作体系结构
第三章 软件互操作
3.1 基于TCP/IP的通信过程 3.2 RMI原理及应用 3.3 互操作体系结构
3.2 RMI原理及应用 原理及应用
• RMI---Remote Method Invocation,即远程 RMI-----Remote Invocation, 方法调用 • 它是Java底层的互操作技术。实现了分布式 它是Java底层的互操作技术。 Java底层的互操作技术 对象间相互通信的关键技术。 对象间相互通信的关键技术。 • 远程方法调用(RMI):允许在远端对象上 远程方法调用(RMI): ):允许在远端对象上 激活方法,而不仅仅在一个虚拟机中, 激活方法,而不仅仅在一个虚拟机中,这样可 以获得面向对象编程的许多优点,如封装、 以获得面向对象编程的许多优点,如封装、继 多态。 承、多态。
3.2 RMI原理及应用 3.2.4 远程方法调用实例---生成主键
构建实例的支持技术----JNDI 2. 构建实例的支持技术 JNDI: Java Naming and Directory Interface ------------Java命名和目录接口 命名和目录接口 是J2EE API 功能: 借助于它提供的接口,能够提供名字绑定 查找对象等功能 名字绑定和 等功能。 功能 借助于它提供的接口,能够提供名字绑定和查找对象等功能。 JNDI树:JNDI命名图,网络中类似于映射表,用于记录绑定信息。 树 命名图, 命名图 网络中类似于映射表,用于记录绑定信息。
3.2 RMI原理及应用 3.2.4 远程方法调用实例---生成主键
该例回答以下三个问题: 该例回答以下三个问题 远程对象组成;(代码) ;(代码 ●远程对象组成;(代码) 远程对象的绑定操作。 图示+代码) ●远程对象的绑定操作。(图示+代码) 客户查找并调用远程对象。(图示+代码) 。(图示 ●客户查找并调用远程对象。(图示+代码)
//RemoteException: 当网络相关问题出现时,将被抛出 当网络相关问题出现时 将被抛出. 将被抛出
public long generate() throws RemoteException; }
3.2 RMI原理及应用 3.2.4 远程方法调用实例---生成主键
◆远程对象实现 --- PKGenerator.java import java.rmi.RemoteException; public class PKGenerator implements IPKGenerator { public PKGenerator() throws Exception, RemoteException { super(); } public synchronized long generate() throws RemoteException { return i++; } private i = 0; }
第三章 软件互操作
软件互操作: 软件互操作: 是网络环境中应用层的一个实体对另 一个实体所提供功能的直接使用,即对信息的交换和使用。 一个实体所提供功能的直接使用,即对信息的交换和使用。
第三章 软件互操作
3.1 基于TCP/IP的通信过程 3.2 RMI原理及应用 3.3 互操作体系结构
第三章 软件互操作
3.1 基于TCP/IP的通信过程 3.2 RMI原理及应用 3.3 互操作体系结构
3.1 基于 基于TCP/IP的通信过程 的通信过程
基于TCP/IP的通信过程 的通信过程 基于
客户 客户 服务器 服务器
连接请求
创建
等待连接的套接字
通信套接字
客户、 图 3-1 客户、服务器及端口之间的关系
3.1 基于 基于TCP/IP的通信过程 的通信过程 套接字: 套接字: 缺点:通信过程繁琐。 缺点:通信过程繁琐。 不能根据请求内容,区分处理, 不能根据请求内容,区分处理,调用 不同的处理过程。 不同的处理过程。
3.2 RMI原理及应用 原理及应用
3.2.3 网络环境的远程方法调用
2. 指代作用
指代作用1 RMI利用指代完成客户与服务器的关联. 指代作用1:RMI利用指代完成客户与服务器的关联. 利用指代完成客户与服务器的关联 客户指代: 与客户运行在相同的地址空间,负责 客户指代: 与客户运行在相同的地址空间, 代理客户处理客户的服务请求. 代理客户处理客户的服务请求. 指代 服务器骨架: 与服务器运行在相同的地址空间, 服务器骨架: 与服务器运行在相同的地址空间, 负责 传到服务器方的方法调用和结果返回. 传到服务器方的方法调用和结果返回.
(3)对象序列化 )
如果传递的参数是基本类型(int,long, 如果传递的参数是基本类型(int,long, float等 不用序列化; float等)不用序列化; 如果是一个对象, 如果是一个对象,它必须实现 ng.Serializable接口 接口, ng.Serializable接口,即为对象序 列化。 列化。 所有对象被序列化为bit-blob, 所有对象被序列化为bit-blob,通过网络发 bit 然后在目标机器上解序列化。 送,然后在目标机器上解序列化。
3.2 RMI原理及应用 原理及应用
3.2.3 网络环境的远程方法调用 指代作用3 参数编排、还原。 指代作用3:参数编排、还原。 编排: 编排:将客户的高层调用语句打包成一条低层请 求消息。 求消息。 还原:与编排相反的过程。 还原:与编排相反的过程。
实现参数传递: 客户指代、 实现参数传递:由客户指代、服务器骨架与低层网 络合作实现。 络合作实现。
3.2.1 RMI基础 基础
(1)面向接口编程 )
远程对象: 接口和实现两个部分, 远程对象:由接口和实现两个部分,由 两个部分 远程接口暴露远程对象的方法。 远程接口暴露远程对象的方法。 RMI中不能直接对对象实现实施远程调 在RMI中不能直接对对象实现实施远程调 只能对对象的接口操作。 用,只能对对象的接口操作。 远程接口必须扩展java.rmi.Remote java.rmi.Remote, 远程接口必须扩展java.rmi.Remote,接 口中包含远程对象公开的每个方法的拷 贝。
相关文档
最新文档