Hessian2
Introduction
Hessian2 is a binary serialization protocol primarily used for remote invocation and data transfer in Java applications. It supports various data types, including primitive types, custom objects, and collections, employing a compact encoding method to provide efficient performance.
The Hessian2 protocol is used for interoperability between Kitex and Dubbo. While not a core serialization protocol natively supported by Kitex, it is supported by extension libraries.
Usage
Specify the Hessian2 protocol when generating code (its IDL type should be thrift, but it can be left unspecified as the default).
Client
-
Generate Code
kitex -protocol Hessian2 -I idl/ idl/${idl_name}.thrift
-
Client Initialization
cli, err := service.NewClient(destService, // Configure DubboCodec client.WithCodec(dubbo.NewDubboCodec( // Specify the Dubbo Interface to be invoked dubbo.WithJavaClassName("JavaInterfaceName"), )), )
Server
-
Generate Code
kitex -protocol Hessian2 -service ${service_name} -I idl/ idl/${idl_name}.thrift
-
Server Initialization
svr := service.NewServer(destService, // Configure DubboCodec server.WithCodec(dubbo.NewDubboCodec( // Configure the Java Interface corresponding to the Kitex service. Other Dubbo and Kitex clients can invoke this name. dubbo.WithJavaClassName("JavaInterfaceName"), )), )
Additional Information
-
To ensure interoperability with Dubbo Java, add the
JavaClassName
annotation to each struct defined in the IDL, with the value being the corresponding Java class name. -
DubboCodec provides extensive compatibility and support for Kitex-Dubbo interoperability. For details, please refer to https://github.com/kitex-contrib/codec-dubbo/blob/main/README.md.