讲师中心 微信公众号
AI工具推荐 视频效率加速

java中RMI的原理分析

小雪小哥_3506

小雪小哥_3506

发布时间:2025-12-03 08:04:02

|

334人浏览过

|

来源于php中文网

原创

RMI是Java远程方法调用机制,通过Stub代理实现客户端本地调用假象,参数与返回值需序列化,使用JRMP协议通信;服务端通过UnicastRemoteObject暴露远程对象,绑定至指定端口;Registry作为命名服务负责注册与查找,不参与实际调用;依赖序列化、动态类加载和DGC三大支撑,适用于Java内部系统间调用。

java中rmi的原理分析

RMI(Remote Method Invocation)是Java提供的远程方法调用机制,核心目标是让调用远程对象像调用本地对象一样自然。它不是简单的网络通信封装,而是一套包含代理、序列化、动态类加载和远程协议协同的完整体系。

客户端通过Stub实现“本地调用假象”

真正执行远程调用的不是业务对象本身,而是由RMI运行时在客户端生成的Stub(存根)。Stub是一个实现了与远程接口相同方法签名的本地代理类。当程序调用stub的方法时:

  • Stub负责将方法名、参数类型、参数值等信息打包成调用描述
  • 所有参数必须可序列化(实现Serializable),否则抛出NotSerializableException
  • 通过TCP连接将调用请求发往远程JVM的Skeleton(旧版)或直接交给Registry+UnicastRemoteObject(新版)

服务端靠UnicastRemoteObject暴露远程能力

远程对象必须继承UnicastRemoteObject(或显式调用exportObject()),才能被RMI运行时赋予网络监听能力:

  • 启动时自动绑定到随机或指定端口,等待客户端连接
  • 接收到调用请求后,反序列化参数、反射调用真实对象方法
  • 将返回值(也需可序列化)序列化后回传给客户端
  • 默认使用JRMP(Java Remote Method Protocol),基于TCP,不兼容HTTP或其他语言

Registry承担“地址簿”角色,但不参与实际调用

rmiregistry是一个轻量级命名服务,仅用于绑定和查找远程对象引用:

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载

立即学习“Java免费学习笔记(深入)”;

  • 服务端调用Naming.rebind("rmi://host:port/name", remoteObj)注册对象
  • 客户端调用Naming.lookup("rmi://host:port/name")获取Stub对象(不是远程对象本身)
  • Registry本身不转发调用,只返回一个指向服务端IP+端口的Stub实例
  • JDK 9+中Registry已标记为deprecated,推荐用LocateRegistry.getRegistry()替代

跨JVM通信依赖三大基础支撑

RMI能透明运行,背后离不开Java平台的深度配合:

  • 序列化机制:自动处理对象图遍历、循环引用、transient字段跳过等,是参数/返回值传输的前提
  • 动态类加载(RMI Class Loading):客户端Stub中若含服务端自定义类,可通过codebase特性从远程URL加载字节码(需安全策略许可)
  • GC协同(DGC):分布式垃圾回收器跟踪远程引用,当客户端长时间未访问某远程对象,服务端可安全回收

基本上就这些。RMI设计初衷是简化Java内部系统间调用,不是为异构环境或高并发场景打造。如今虽被Dubbo、gRPC等取代,但理解它有助于把握分布式调用的本质逻辑。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

1893

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

2574

2023.10.07

dubbo和zookeeper有什么区别
dubbo和zookeeper有什么区别

dubbo和zookeeper的区别:1、功能定位;2、使用场景;3、数据存储与协调;4、集成与关系;5、性能与可靠性;6、扩展性与灵活性;7、社区与生态系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

556

2024.02.23

springcloud和dubbo有哪些区别
springcloud和dubbo有哪些区别

springcloud和dubbo的区别:1、定位与关注点;2、生态环境与集成性;3、调用方式与性能;4、组件与功能;5、定制性与灵活性;6、学习曲线与上手难度;7、社区支持与维护。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

256

2024.02.23

dubbo原理和机制是什么
dubbo原理和机制是什么

dubbo原理和机制的解释:1、核心组件;2、通信原理;3、集群容错;4、自动发现与注册;5、负载均衡与路由;6、序列化与传输;7、监控与日志;8、扩展性;9、安全性;10、与spring集成等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

181

2024.02.23

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3048

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

4309

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3689

2025.12.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

80

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn