dubbo协议约束
Posted HelloWorld搬运工
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo协议约束相关的知识,希望对你有一定的参考价值。
阿里重启Dubbo维护已经半年多了,今天我们来聊聊Dubbo支持的协议,以及协议有哪些限制。内容摘自Dubbo开源官方文档。
dubbo:
Ø 参数及返回值需实现Serializable接口
Ø 参数及返回值不能自定义实现List, Map, Number, Date, Calendar等接口,只能用JDK自带的实现,因为hessian会做特殊处理,自定义实现类中的属性值都会丢失。
Hessian序列化,只传成员属性值和值的类型,不传方法或静态变量,兼容情况:(由吴亚军提供)
接口增加方法,对客户端无影响,如果该方法不是客户端需要的,客户端不需要重新部署;
输入参数和结果集中增加属性,对客户端无影响,如果客户端并不需要新属性,不用重新部署;
输入参数和结果集属性名变化,对客户端序列化无影响,但是如果客户端不重新部署,不管输入还是输出,属性名变化的属性值是获取不到的。
总结:服务器端和客户端对领域对象并不需要完全一致,而是按照最大匹配原则。
rmi:
Ø 参数及返回值需实现Serializable接口
Ø dubbo配置中的超时时间对rmi无效,需使用java启动参数设置:-Dsun.rmi.transport.tcp.responseTimeout=3000,参见下面的RMI配置。
hessian:
Ø 参数及返回值需实现Serializable接口
Ø 参数及返回值不能自定义实现List, Map, Number, Date, Calendar等接口,只能用JDK自带的实现,因为hessian会做特殊处理,自定义实现类中的属性值都会丢失。
http:
Ø 参数及返回值需符合Bean规范
webservice:
Ø 参数及返回值需实现Serializable接口
Ø 参数尽量使用基本类型和POJO。
thrift:
Ø null值 (不能在协议中传递null值)
memcached:
redis:
以上是关于dubbo协议约束的主要内容,如果未能解决你的问题,请参考以下文章