hessian://
![]() | Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。 |
![]() | Hessian是Caucho开源的一个RPC框架:http://hessian.caucho.com,其通讯效率高于WebService和Java自带的序列化。 |
依赖:
< dependency > < groupId >com.caucho</ groupId > < artifactId >hessian</ artifactId > < version >4.0.7</ version > </ dependency > |
可以和原生Hessian服务互操作,即:
- 提供者用Dubbo的Hessian协议暴露服务,消费者直接用标准Hessian接口调用,
- 或者提供方用标准Hessian暴露服务,消费方用Dubbo的Hessian协议调用。
基于Hessian的远程调用协议。
- 连接个数:多连接
- 连接方式:短连接
- 传输协议:HTTP
- 传输方式:同步传输
- 序列化:Hessian二进制序列化
- 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
- 适用场景:页面传输,文件传输,或与原生hessian服务互操作
(1) 约束:
- 参数及返回值需实现Serializable接口
- 参数及返回值不能自定义实现List, Map, Number, Date, Calendar等接口,只能用JDK自带的实现,因为hessian会做特殊处理,自定义实现类中的属性值都会丢失。
(2) 配置:
Define hessian protocol:
< dubbo:protocol name = "hessian" port = "8080" server = "jetty" /> |
Set default protocol:
< dubbo:provider protocol = "hessian" /> |
Set service protocol:
< dubbo:service protocol = "hessian" /> |
Multi port:
< dubbo:protocol id = "hessian1" name = "hessian" port = "8080" /> < dubbo:protocol id = "hessian2" name = "hessian" port = "8081" /> |
Directly provider:
< dubbo:reference id = "helloService" interface = "HelloWorld" url = "hessian://10.20.153.10:8080/helloWorld" /> |
h4. Jetty Server: (default)
< dubbo:protocol ... server = "jetty" /> |
h4. Servlet Bridge Server: (recommend)
< dubbo:protocol ... server = "servlet" /> |
web.xml:
< servlet > < servlet-name >dubbo</ servlet-name > < servlet-class >com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >dubbo</ servlet-name > < url-pattern >/*</ url-pattern > </ servlet-mapping > |
注意,如果使用servlet派发请求:
- 协议的端口<dubbo:protocol port="8080" />必须与servlet容器的端口相同,
- 协议的上下文路径<dubbo:protocol contextpath="foo" />必须与servlet应用的上下文路径相同。
Labels:
None
2 Comments
comments.show.hide八月 06, 2013
Anonymous
dubbo 自带的hessian2的协议序列化与反序列化有bug,类型是 DateTime 使用hessian 4.7的就没问题。
八月 06, 2013
Anonymous
DateTime 是joda-time 2.2 hessian 4.7的没问题。