Hessian

简介: Hessian 1协议基于HTTP通信,采用Servlet暴露服务,Dubbo内嵌Jetty实现。支持与原生Hessian服务互操作,使用Hessian二进制序列化,适用于参数较大、提供者多于消费者、需传输文件的场景。要求参数及返回值实现Serializable,仅用JDK标准集合类。支持多连接、短连接、同步传输,可配置多端口与直连调用。

Hessian 1 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。

Dubbo 的 Hessian 协议可以和原生 Hessian 服务互操作,即:

● 提供者用 Dubbo 的 Hessian 协议暴露服务,消费者直接用标准 Hessian 接口调用

● 或者提供方用标准 Hessian 暴露服务,消费方用 Dubbo 的 Hessian 协议调用。

特性

● 连接个数:多连接

● 连接方式:短连接

● 传输协议:HTTP

● 传输方式:同步传输

● 序列化:Hessian二进制序列化

● 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。

● 适用场景:页面传输,文件传输,或与原生hessian服务互操作

依赖

<dependency>

   <groupId>com.caucho</groupId>

   <artifactId>hessian</artifactId>

   <version>4.0.7</version>

</dependency>

约束

● 参数及返回值需实现 Serializable 接口

● 参数及返回值不能自定义实现 List, Map, Number, Date, Calendar 等接口,只能用 JDK 自带的实现,因为 hessian 会做特殊处理,自定义实现类中的属性值都会丢失。

配置

定义 hessian 协议:

<dubbo:protocol name="hessian" port="8080" server="jetty" />

设置默认协议:

<dubbo:provider protocol="hessian" />

设置 service 协议:

<dubbo:service protocol="hessian" />

多端口:

<dubbo:protocol id="hessian1" name="hessian" port="8080" />

<dubbo:protocol id="hessian2" name="hessian" port="8081" />

直连:

<dubbo:reference id="helloService" interface="HelloWorld" url="hessian://10.20.153.10:8080/helloWorld" />

1. Hessian

是 Caucho 开源的一个 RPC 框架,其通讯效率高于 WebService 和 Java 自带的序列化。↩

相关文章
|
7月前
|
存储 缓存 负载均衡
Nacos注册中心
本文详细介绍Nacos的安装部署、服务注册与发现、分级模型、负载均衡策略、权重控制、环境隔离及实例类型等核心功能,涵盖从入门到实战的全流程,助力掌握Nacos在微服务架构中的应用,实现高效服务治理与配置管理。
|
Java 编译器 C++
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
这篇文章解释了Java能够实现“一次编写,到处运行”的原因,主要归功于Java虚拟机(JVM),它能够在不同平台上将Java源代码编译成的字节码转换成对应平台的机器码,实现跨平台运行。
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
|
存储 负载均衡 大数据
【分布式】集群和分布式
【1月更文挑战第25天】【分布式】集群和分布式
|
Java API Nacos
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forge
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forge
1120 2
|
Java 数据库连接 数据库
【Java异常】Failed to determine a suitable driver class
【Java异常】Failed to determine a suitable driver class
1927 0
|
安全 Java 程序员
ArrayList vs Vector:一场线程安全与性能优化的世纪之争!
在 Java 面试中,ArrayList 和 Vector 是高频考点,但很多人容易混淆。本文通过10分钟深入解析它们的区别,帮助你快速掌握性能、线程安全性、扩容机制等核心知识,让你轻松应对面试题目,提升自信!
476 18
|
关系型数据库 MySQL Windows
MySQL数据导入:MySQL 导入 Excel 文件.md
MySQL数据导入:MySQL 导入 Excel 文件.md
|
存储 算法 C++
【C++】priority_queue、仿函数和反向迭代器
C++优先级队列、仿函数和反向迭代器的介绍及使用。
|
前端开发 JavaScript
在Vue中如何修改element UI组件的样式(deep 深度选择器)
在Vue中如何修改element UI组件的样式(deep 深度选择器)
2359 0
在Vue中如何修改element UI组件的样式(deep 深度选择器)
|
4月前
|
SQL 监控 druid
数据库连接池天花板之争:HikariCP 与 Druid 底层原理 + 高并发调优全拆解
本文深入剖析数据库连接池核心原理,对比HikariCP(极致性能、无锁ConcurrentBag设计)与Druid(企业级功能、Filter链扩展),详解连接池本质、性能瓶颈及高并发调优策略(如最优连接数公式、关键参数配置),并附实战代码与避坑指南。
1041 2