HessianSkeleton是Hessian server端的核心类,主要功能是接收网络输入流(被包装为AbstractHessianInput),反序列化输入流得到methodName和参数,然后调用服务端的服务,得到结果后序列化为输出流,返回给客户端,主要流程如下图所示:
HessianSkeleton的核心代码如下所示:
- public void invoke(Object service,
- AbstractHessianInput in,
- AbstractHessianOutput out)
- throws Exception
- {
- ......
- String methodName = in.readMethod();
- Method method = getMethod(methodName);
- ......
- Class []args = method.getParameterTypes();
- Object []values = new Object[args.length];
- for (int i = 0; i < args.length; i++) {
- values[i] = in.readObject(args[i]);
- }
- Object result = null;
- try {
- result = method.invoke(service, values);
- } catch (Throwable e) {
- ......
- }
- // The complete call needs to be after the invoke to handle a
- // trailing InputStream
- in.completeCall();
- out.startReply();
- out.writeObject(result);
- out.completeReply();
- out.close();
- }
主流程代码非常清晰,不需要太多解释,关键的地方在于对网络流的序列化和反序列化,我会在hessian io分析的部分中进行详细阐述
相关推荐
com.alibaba:hessian-lite:jar:3.2.1-fixed-2 hessian-lite hessian-lite-3.2.1-fixed-2.jar
赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...
赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...
赠送jar包:hessian-3.3.6.jar 赠送原API文档:hessian-3.3.6-javadoc.jar 赠送源代码:hessian-3.3.6-sources.jar 包含翻译后的API文档:hessian-3.3.6-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven...
在解压的"**hessian-4.0.51-src**"源码包中,主要包含两个关键文件:"**pom.xml**"和"**src**"。 1. **pom.xml**:这是Maven项目的配置文件,定义了项目依赖、构建过程等信息。通过这个文件,我们可以看到Hessian ...
赠送jar包:hessian-3.3.6.jar; 赠送原API文档:hessian-3.3.6-javadoc.jar; 赠送源代码:hessian-3.3.6-sources.jar; 赠送Maven依赖信息文件:hessian-3.3.6.pom; 包含翻译后的API文档:hessian-3.3.6-javadoc-...
hessian是一个轻量级的Java Remoting方案
java运行依赖jar包
总结一下,Hessian的源码分析主要关注客户端的`HessianProxy`和服务器端的`HessianSkeleton`这两个核心类。它们分别负责客户端的调用代理和服务器端的请求处理。源码中包含了方法名缓存、特殊方法的本地处理、以及...
Hessian 框架源码jar包 hessian-4.0.7-src.jar
Hessian-lite最初是的Apache dubbo嵌入版本。 然后,此模块与Dubbo分离。 所有分支:2.5.x,2.6.x(自2.6.3起)和2.7.x都依赖于它,请查看详细信息: 现在,我们正在尝试建立一个黑森州小组以使黑森州社区的维护者...
hessian-3.1.6.jarhessian-3.1.6.jar
hessian-3.2.0源码,在做分布式交互时,可能要重写hessian
三、Hessian-lite在Dubbo中的作用 1. **远程调用**:在Dubbo框架中,Hessian-lite用于实现服务调用的二进制序列化和反序列化,使得远程方法调用(RMI)更加高效。它将Java对象转换为二进制流,通过网络发送,然后在...
通过阅读和分析Hessian的源码,我们可以了解其如何编码和解码各种数据类型,以及如何优化序列化和反序列化的过程。这对于优化自定义序列化逻辑或者解决Hessian使用中遇到的问题非常有帮助。 总结起来,Hessian是一...
这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...
《Hessian源码分析与Hack:携带远程调用端信息》 Hessian作为一种轻量级的RPC(远程过程调用)框架,因其高效、简洁的二进制协议,被广泛应用于构建Web服务。然而,在实际应用中,有时我们需要获取到远程调用端的IP...
在实际开发过程中,可能会遇到由于阿里的网络限制导致无法直接获取 hessian-lite 这个依赖的问题,此时需要用户手动下载 hessian-lite 源码,通过 Maven 安装到本地仓库以解决依赖。 【描述】中提到的 "dubbo源码...