RMI规范--九

Java远程方法调用(RMI)技术详解 Java RMI(远程方法调用)采用三层架构实现分布式通信,包含注册表服务、服务端和客户端三大核心组件。服务端通过导出远程对象并绑定到注册表,客户端通过接口契约查找并调用远程方法。RMI采用租约机制管理远程对象生命周期,通过引用计数和定期续租实现分布式垃圾回收。开发时需要严格分离服务端与客户端代码,通过模块化部署确保安全性,并注意注册表必须与服务器同机部署。RMI架构隐藏了底层网络通信细节,使远程调用语法与本地调用保持一致,同时处理了对象定位、参数序列化和异常处理等分布式环境下的复杂问题。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 第 9 章 本章中的接口和类用于 RMI 的分布式垃圾收集器 (DGC)。 主题: 接口 DGC Lease 类 ObjID 类 UID 类 VMID 类 9.1 接口 DGC DGC 抽象用于分布式垃圾收集算法的服务器端。此接口包含两种方法:dirty 和 clean。当远程引用在客户机(客户机由 VMID 表示)端解编时,将调用 dirty 。当客户机中不再存在对远程引用的引用时,将进行相应的清理调用。失败的 d irty 调用必须预定一次 strong(强)clean 调用,以便保留调用顺序号码,从 而检测以后由分布式垃圾收集器接收的无序调用。 对远程对象的引用将被拥有该引用的客户机租用 (leased) 一段时间。租用期从 接收到 dirty 调用时开始。客户机必须在租用到期前在其所保存的远程引用上再 次调用 dirty,以便进行续租。如果在到期之前不续租,则分布式垃圾收集器就 认为该客户机不再引用远程对象。


package java.rmi.dgc; 

import java.rmi.server.ObjID; 



public interface DGC extends java.rmi.Remote 

{ 



Lease dirty(ObjID[] ids, long sequenceNum, Lease lease) 

throws java.rmi.RemoteException; 



void clean(ObjID[] ids, long seqNum, VMID vmid, boolean strong) 

throws java.rmi.RemoteException; 

} 



方法 dirty 请求租用与数组参数 ids 中所含对象标识符相关联的远程对象引用 。lease 包含客户机唯一虚拟机标识符 (VMID) 和请求的租用期。垃圾收集器将 为每个本地虚拟机中导出的远程对象保留一个 reference list(引用列表)-- 保存引用的客户机列表。如果准予租用,垃圾收集器将把客户机 VMID 添加到 i ds 中指示的每个远程对象的引用列表中。sequenceNum 用来检测和丢弃后期垃圾 收集器调用的顺序号。每次调用垃圾收集器,顺序号都将增大。 某些客户机不能生成唯一的 VMID。这是因为只有当 VMID 包含 true(真)主机 地址时,才是通用的唯一标识符。由于安全性限制,某些客户机将无法获得该地 址。此种情况下,客户机可以使用空 VMID。分布式垃圾收集器将为客户机指派 VMID。 dirty 调用将返回 Lease 对象,其中包含远程引用所用的 VMID 和准许的租用期 (服务器可以决定授予比客户机请求短的租用期)。客户机必须使用垃圾收集器 所用的 VMID,以便在客户机释放远程对象引用时进行相应的 clean 调用。 客户虚拟机仅需对每个虚拟机中引用的远程引用进行一次初始 dirty 调用(即使 它对同一远程对象进行多次引用)。此外,客户机还必须在租用到期前调用 dir ty 对远程引用的租用进行续租。当客户机对特定的远程对象再无任何引用时,必 须为与该引用关联的对象 ID 预定一次 clean 调用。 clean 调用将从 ids 指定的远程对象的引用列表中删除 vmid。顺序号用来检测 以后的清理操作。如果参数 strong 为真,则代表 clean 调用是一次失败的 di rty 调用的结果。此时应记住客户机 vmid 的顺序号。 9.2 Lease 类 租用包含一个唯一的虚拟机标识符和一个租用期。Lease 对象用来请求及准予对 远程对象引用的租用。


package java.rmi.dgc; 



public final class Lease implements java.io.Serializable 

{ 



public Lease(VMID id, long duration); 



public VMID getVMID(); 



public long getValue(); 

} 



Lease 构造函数创建带有特定 VMID 和租用期的租用。VMID 可以为 null。 getVMID 方法返回与租用相关联的客户机 VMID。 getValue 方法返回租用期。 9.3 ObjID 类 类 ObjID 用来作为虚拟机中对远程对象的唯一标识。每个标识符均包含一个对象 号和一个特定主机上的唯一地址空间标识符。对象标识符将在导出远程对象时指 派给该对象。 ObjID 由对象号 (long) 和地址空间的唯一标识符 (UID) 组成。


package java.rmi.server; 



public final class ObjID implements java.io.Serializable 

{ 



public ObjID (); 



public ObjID (int num); 



public void write(ObjectOutput out) throws java.io.IOException; 



public static ObjID read(ObjectInput in) 

throws java.io.IOException; 



public int hashCode() 



public boolean equals(Object obj) 



public String toString() 

} 



ObjID 构造函数的第一种形式将生成唯一的对象标识符。第二个构造函数生成已 知的对象标识符(例如注册服务程序和分布式垃圾收集器所用的标识符),并将 已知的对象号用作参数。第二个构造函数所生成的已知对象 ID 与缺省构造函数 所生成的对象 ID 不冲突;为强制实现这一点,ObjID 的对象号将被设置为构造 函数中提供的“已知”号,同时所有 UID 域均将设置为零。 方法 write 将对象 ID 的表示法编组到输出流中。 方法 read 构造一个对象 ID,其内容将从指定的输入流中读取。 方法 hashCode 将对象号作为 hashcode 返回。 如果 obj 与 ObjID 内容相同,则 equals 方法返回 true。 toString 方法返回一个包含对象 ID 表示法的字符串。仅当对象 ID 来自非本地 地址空间时,地址空间标识符才将含在字符串表示法中。 .4 UID 类 UID 是一种抽象类,用来创建生成它的主机的唯一标识符。它将以地址空间标识 符的形式含在 ObjID 中。UID 由一个在主机上唯一的号码 (int)、时间 (long) 和计数组成 (short)。




package java.rmi.server; 



public final class UID implements java.io.Serializable 

{ 



public UID(); 



public UID(short num); 



public int hashCode(); 



public boolean equals(Object obj); 



public String toString(); 



public void write(DataOutput out) throws java.io.IOException; 



public static UID read(DataInput in) throws java.io.IOException; 

} 

构造函数的第一种形式将创建生成它的主机的唯一纯标识符。此 UID 在以下条件 下具有唯一性:a) 计算机需要一秒以上的时间进行重新启动,b) 计算机的时钟 将永不向前调整。为了构造全局唯一的 UID,只需将 UID 与 InetAddress 分别 配对。 构造函数的第二种形式将创建一种已知的 UID。已知 ID 有 216 -1 种可能。这 种构造函数所生成的 ID 不会与缺省 UID 构造函数所生成的 ID 冲突。缺省构造 函数生成主机上真正唯一的标识符。 方法 hashCode、equals 和 toString 是为 UID 所定义的。如果两个 UID 的内 容相同,则视为二者等价。 方法 write 将把 UID 写入输出流中。 方法 read 构造一个 UID,其内容将从指定输入流中读取。 RMI规范--二 RMI规范--三 RMI规范--四 RMI规范--五 RMI规范--六 RMI规范--七 RMI规范--八 RMI规范--九 RMI规范--十
Rpc与RMI服务 在本篇的结尾,我们来个彩蛋,还记得上面RMI的注册表吗?前面我们是通过JDK的exe程序启动的,那么我们能不能自己开发或者自己启动RMI注册表呢?其实是可以的,在包中有个Registry接口,并且该接口有个默认的实现类,其实JDK源码中Naming类就是使用的实现的注册和调用,那么我们来看看的方法:自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 阅读详情

相关推荐

ESP32-CAM与TFT屏幕实时图像传输:Arduino环境下的OV2640驱动实践

本文详细介绍了在Arduino环境下实现ESP32-CAM与TFT屏幕实时图像传输的完整实践方案。重点解析了OV2640摄像头的驱动配置、硬件引脚连接、TFT屏幕初始化及图像显示优化技巧,帮助开发者快速构建稳定的实时图像显示系统,适用于物联网监控、门禁系统等场景。

cuda7parallel的博客 115

TinyRMI---RMI的封装、扩展及踩到的坑的解决

在Tiny的并行计算中,引用了远程方法调用工程,就是这里说的TinyRMI,当时在写测试用例的时候,只是在单机进行了测试,一切安好,但是Dawn在使用时,在多机进行试用,结果就出现了问题,最后花了不下一人周,才解决了Dawn发现的问题,最终解决了问题,也发现了RMI中的一些坑。可能有的人已经走过了,有的人如果没有碰到,也可能会掉同样的坑,因此把它成文,以飨读者,避免上同样的当。 此文的形成离不开

tiny_top的博客 399

cadence——MOS晶体管I-V特性曲线仿真

MOS晶体管I-V特性曲线仿真 目标:使用cadence绘制晶体管的I-V特性曲线(dc仿真) 流程: 新建原理图,将MOS管的栅极电压设为变量Vg,漏极电压设为变量Vd 打开ADEL,点击Variables——Copy From Cellview添加变量;并选择dc仿真,对Vd进行扫描 以Vg作为参变量进行仿真,点击Tools——Parametric Analysis进行设置 选择漏极电流作为输出,进行仿真即可得到I-V特性曲线 ...

skycmq的博客 1万+

java RMI原理详解

定义 RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里

xinghun_4的专栏 3万+

实用软件工程(第2版)吕云翔编简答题部分答案(自用整理)

整理自用

m0_61217768的博客 4109

用户和实体行为分析(UEBA)基础指南及解决方案

用户和实体行为分析(UEBA)或异常检测是一种网络安全技术,它使用机器学习(ML)算法来检测网络中用户、主机和其他实体的异常活动。

ITmoster的博客 2893

RMI规范(4)

RMI规范--第四章 客户机接口 程序员在编写使用远程对象的 applet 或应用程序时,需要注意 java.rmi 包 中可用的 RMI 系统客户机可视接口。 4.1 远程接口 package java.rmi; public interface Remote {} java.rmi.Remote 接口用来识别所有远程接口;所有远程对象必须直接或间接 实现此接口。 实现类可以

morningbird的专栏 1257

C#联合Halcon机器视觉框架源码—升级版

相较于之前的NxtVision,本软件代码架构更加合理,且新增。对源码有需求的,订阅本专栏后,私信我领取。、原来的vb脚本改为。

Z's Palace 1416

RMI规范(6) --(10)

RMI规范(6) 注册服务程序接口 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- 第 6 章 RMI 系统使用 java.

bluevoyage的专栏 1万+

如何使用PostgreSQL数据库进行数据仓库的ETL操作

本文旨在为数据工程师、数据库管理员和分析师提供使用PostgreSQL进行数据仓库ETL操作的全面指南。ETL流程的基本原理PostgreSQL在ETL中的独特优势实际ETL实现的技术细节性能优化和最佳实践常见问题的解决方案首先介绍ETL和PostgreSQL的基本概念然后深入探讨核心技术和实现方法接着提供实际案例和代码示例最后讨论优化技巧和未来趋势ETL:提取(Extract)、转换(Transform)、加载(Load)的缩写,描述数据从源系统移动到目标数据仓库的过程。

2502_91592937的博客 873

微信小程序:errno: 600001, errMsg: “uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::E

微信小程序报错uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::ERR_CONNECTION_RESET, custum ip is invalid, didn't find user's ip,wx.uploadFile errno: 600001 errcode:-101 ?微信小程序wx.uploadFile错误,wx.uploadFile 在真机上报下面的错误,调试工具里没有问题,其它接口在真机/调试工具都正常,

✅ 精选推荐文章 4260

RMI规范(3)

RMI规范--第三章 主题: Stub 与 skeleton 远程方法调用中的线程使用 远程对象的垃圾收集 动态类的加载 通过代理服务器透过防火墙的 RMI 3.1 Stub 与 skeleton 在与远程对象的通信过程中,RMI 将使用标准机制(用于 RPC 系统):stub 与 skeleton。远程对象的 stub 担当远程对象的客户本地代表或代理人角色。 调用程序将调用本地 s

morningbird的专栏 1183

13. MIC配置

恒玄BES2700,支持3个MIC。

雪飞_海 929

RMI规范(2)

RMI规范--第二章 Java 分布式对象模型 2.1 分布式对象应用程序 RMI 应用程序通常包括两个独立的程序:服务器程序和客户机程序。典型的服务 器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机 调用那些远程对象上的方法。而典型的客户机程序则从服务器中得到一个或多个 远程对象的引用,然后调用远程对象的方法。RMI 为服务器和客户机进行通讯 和信息传递提供了一种机

morningbird的专栏 1989

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RMI规范(5)

RMI规范--第五章 服务器接口 java.rmi.server 包包含通常用于实现远程对象的接口与类。 主题: RemoteObject 类 RemoteServer 类 UnicastRemoteObject 类 Unreferenced 接口 RMISecurityManager 类 RMIClassLoader 类 LoaderHandler 接口 RMI 套接字工厂 RMIFai

morningbird的专栏 1167

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RMI介绍

      其实我近日有想法要请总坛主开设Java分布式应用版块,专门讨论Java分布式应用。如Jini,CORBA,RMI,RMI-IIOP等。更进一步,还包括各种技术之间的通讯等问题。比如RMI-IIOP和CORBA通讯,Jini访问CORBA对象,EJB到CORBA映射等高级问题。不过暂时还没有实现。所以姑且在此先讨论一下这些东西好了。RMI是Sun基于Java技术推出的一种分布式应用方案。

天高任鸟飞,海阔凭鱼跃 2751

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RMI规范--第二 -- 五章

?RMI规范--第二章 Java 分布式对象模型 。。RMI规范--第三章 主题: Stub 与 skeleton;; 远程方法调用中的线程使用 ;;远程对象的垃圾收集;;动态类的加载;;通过代理服务器透过防火墙的 RMI ;;。。RMI规范--第四章 客户机接口;; 程序员在编写使用远程对象的 applet 或应用程序时,需要注意 java.rmi 包中可用的 RMI 系统客户机可视

bluevoyage的专栏 1694

RMI规范(10)

RMI 通信协议 10.1 概述 RMI 协议使用另两个协议作为其在通信格式:Java 对象序列化和 HTTP。对象序 列化协议用于编组调用和返回数据。HTTP 协议用于“投寄”远程方法调用,并在 情况允许时获得返回数据。每种协议都有专门的语法文档。产品规则中的非终结 符号可能会引用其它协议(对象序列化或 HTTP)所管理的规则。在跨协议边界时 ,后续产品将使用该嵌入的协议。 关于语法符号

morningbird的专栏 1024

RMI规范–第十章 RMI 通信协议

RMI规范–第十章 RMI 通信协议 (转贴) 10.1 概述RMI 协议使用另两个协议作为其在通信格式:Java 对象序列化和 HTTP。对象序列化协议用于编组调用和返回数据。HTTP 协议用于“投寄”远程方法调用,并在情况允许时获得返回数据。 每种协议都有专门的语法文档。产品规则中的非终结符号可能会引用其它协议(对象序列化或 HTTP)所管理的规则。在跨协议边界时,后续产品将使用该...

jybzjf的专栏 1434

【Dongle】【Java】规范之RMI

RMI(Remote Method Invoke):remote(遥远的) invoke(调用),RMI是一种被EJB使用的更底层的协议,能够让在某个Java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。

郑晓东 廊坊师范学院信息技术提高班 十二期 657

RMI规范--五

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 442

RMI规范--四

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 262

RMI规范

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 443

什么是RMI

大家好,我是IT修真院武汉分院第15期的学员,一枚正直纯洁善良的JAVA程序员。今天给大家分享一下,修真院官网JAVA任务8的知识点——什么是RMI 1.背景介绍 2.知识剖析 3.常见问题 4.编码实战 5.扩展思考 6.参考文献 7.更多讨论   1.背景介绍 RMI全称是Remote Method Invocation-远程方法调用,是纯Java的网络分布式应用系统的核心...

qq_42218123的博客 4011

从懵逼到恍然大悟之Java中RMI的使用

此处讲的是Java中的RMI,而不是通用意义上的RMI,关于通用的RMI可以参考分布式之RPC的协议以及错误处理 这篇文章。一、Java RMI简介Java RMI用于不同虚拟机之间的通信,这些虚拟机可以在不同的主机上、也可以在同一个主机上;一个虚拟机中的对象调用另一个虚拟上中的对象的方法,只不过是允许被远程调用的对象要通过一些标志加以标识。

lmy86263的博客 8万+

RMI 规范

RMI(基本概念) Java Remote Method Invocation ( RMI -- Java 远程方法调用)允许您使用Java 编写分布式对象,不同的Java 虚拟机(JVM)之间进行对象间的通讯。这些JVM 可以在一台者多台计算机上,使得应用程序(Application) 可以远程调用方法,共享各个系统的资源和处理能力。  RMI 的主要优点 面向对象: RMI 可将完整的

忧郁王子的专栏 2667
上一篇: RMI规范--十
下一篇: RMI规范--七
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值