前言
Dubbo框架支持的通信协议有很多种,本节着重介绍rmi协议。
正文
RMI 协议采用 JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标准序列化方式。适合入出参数据包大小混合,消费者与提供者个数差不多,可传文件,并且可以与原生RMI服务互操作。注意:如果正在使用 RMI 提供服务给外部访问 ,同时应用里依赖了老的 common-collections 包 的情况下,存在反序列化安全风险。
特性
连接:多个短连接,一次调用一个连接,调用结束连接会断掉;
传输:TCP协议,同步阻塞方式传输;
序列化:Java标准二进制序列化;
约束
参数及返回值需实现Serializable接口;
dubbo配置中的超时时间对RMI无效,需要用Java启动参数设置:-Dsun.rmi.transport.tcp.responseTimeout=3000;
配置
协议
示例(单端口):
<dubbo:protocol name="rmi" port="1099" codec="spring"/>
示例(多端口):
<dubbo:protocol id="rmi1" name="rmi" port="1099" />
<dubbo:protocol id="rmi2" name="rmi" port="2099" />
<dubbo:service protocol="rmi1" />