2.RMI

简介: ascasca

RMI 协议采用 JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标准序列化方式。
注意:如果正在使用 RMI 提供服务给外部访问 1,同时应用里依赖了老的 common-collections 包 2 的情况下,存在反序列化安全风险 3

特性
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java 标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI服务互操作
约束
参数及返回值需实现 Serializable 接口
dubbo 配置中的超时时间对 RMI 无效,需使用 java 启动参数设置:-Dsun.rmi.transport.tcp.responseTimeout=3000,参见下面的 RMI 配置
dubbo.properties 配置
RMI配置

XML

复制代码

1

java -Dsun.rmi.transport.tcp.responseTimeout=3000

更多 RMI 优化参数请查看 JDK 文档
接口
如果服务接口继承了 java.rmi.Remote 接口,可以和原生 RMI 互操作,即:
提供者用 Dubbo 的 RMI 协议暴露服务,消费者直接用标准 RMI 接口调用,
或者提供方用标准 RMI 暴露服务,消费方用 Dubbo 的 RMI 协议调用。
如果服务接口没有继承 java.rmi.Remote 接口:
缺省 Dubbo 将自动生成一个 com.xxx.XxxService$Remote 的接口,并继承 java.rmi.Remote 接口,并以此接口暴露服务,
但如果设置了 <dubbo:protocol name="rmi" codec="spring" />,将不生成 $Remote 接口,而使用 Spring 的 RmiInvocationHandler 接口暴露服务,和 Spring 兼容。
配置
定义 RMI 协议:

XML

复制代码

1

<dubbo:protocol name="rmi" port="1099" />

设置默认协议:

XML

复制代码

1

<dubbo:provider protocol="rmi" />

设置服务协议:

XML

复制代码

1

<dubbo:service protocol="rmi" />

多端口:

XML

复制代码

1

2

3

<dubbo:protocol id="rmi1" name="rmi" port="1099" />

<dubbo:protocol id="rmi2" name="rmi" port="2099" />

<dubbo:service protocol="rmi1" />

Spring 兼容性:

XML

复制代码

1

<dubbo:protocol name="rmi" codec="spring" />


1. 公司内网环境应该不会有攻击风险
2. dubbo 不会依赖这个包,请排查自己的应用有没有使用
3. 请检查应用:将 commons-collections3 请升级到 3.2.2
;将 commons-collections4 请升级到 4.1
。新版本的 commons-collections 解决了该问题

若有收获,就点个赞吧

油炸

相关文章
|
网络性能优化 数据中心 云计算
IT知识百科:什么是城域以太网?
【2月更文挑战第1天】
829 2
IT知识百科:什么是城域以太网?
|
消息中间件 Cloud Native 物联网
深度剖析 RocketMQ 5.0,事件驱动:云时代的事件驱动有啥不同?
本文技术理念的层面了解一下事件驱动的概念。RocketMQ 5.0 在面向云时代的事件驱动架构新推出的子产品 EventBridge,最后再结合几个具体的案例帮助大家了解云时代的事件驱动方案。
79644 6
|
传感器 机器人
[ROS2] --- service
[ROS2] --- service
590 0
|
2月前
|
存储 人工智能 Serverless
AI时代最大的宝藏,也藏得最深:80%的企业知识沉睡在非结构化数据中
2026年AI进入应用爆发期,但非结构化数据成为瓶颈。Hologres推出AI原生新架构HSAP 2.0,融合语义搜索、多维分析与Serverless弹性,打造统一数据平面,让企业海量数据高效赋能AI,破解“数据熵”难题,支撑智能客服、销售助手等复杂场景,实现从“为人服务”到“为AI服务”的跨越。
|
分布式计算 关系型数据库 数据库连接
MaxCompute数据问题之数据迁移如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
290 0
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
1546 3
业技融合(BizDevOps)
该文档聚焦业技融合(BizDevOps),旨在构建业务与技术一体化的数字化组织,促进数字业务创新和持久发展。核心内容包括:1) 着重客户价值的协同;2) 全程数字化运营;3) 基于数据的透明度和效能衡量。实践中,涉及产品导向的团队结构、业务驱动的协作、研发资产管理、持续业务交付及数字业务创新。
337 2
|
存储 JSON 前端开发
【MySQL笔记】数字类型、时间和日期类型、字符串类型
在数据库中,经常需要存储一些数字,适合用数字类型来保存。数字类型包括整数类型、浮点数类型、定点数类型、BIT(位)类型。
33825 1
【MySQL笔记】数字类型、时间和日期类型、字符串类型

热门文章

最新文章