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分析的部分中进行详细阐述
分享到:
相关推荐
《Hessian源码分析与Hack:携带远程调用端信息》 Hessian作为一种轻量级的RPC(远程过程调用)框架,因其高效、简洁的二进制协议,被广泛应用于构建Web服务。然而,在实际应用中,有时我们需要获取到远程调用端的IP...
总结一下,Hessian的源码分析主要关注客户端的`HessianProxy`和服务器端的`HessianSkeleton`这两个核心类。它们分别负责客户端的调用代理和服务器端的请求处理。源码中包含了方法名缓存、特殊方法的本地处理、以及...
**五、源码分析** 对于深入理解Hessian的工作机制,阅读和分析源码是必不可少的。Caucho Technology提供了Hessian的开源实现,开发者可以通过阅读源码了解其内部细节,如序列化和反序列化的具体实现、类型转换逻辑...
Hessian是一种二进制协议,它允许在不同的编程语言之间进行高效的远程方法调用(RPC)。...通过分析和实践这些示例代码,你可以更好地掌握Hessian的工作原理和使用方式,为你的跨语言项目打下坚实的基础。
在【标签】中,"源码"可能指的是查看或分析Hessian协议的底层实现,这对于理解其工作原理和优化性能非常有帮助。"工具"可能指的是使用Hessian相关的开发工具或框架,例如HessianProxyFactory、HessianServlet等。 ...
在源码分析方面,理解Hessian的内部工作机制是提升开发技能的重要步骤。通过阅读和分析Hessian的源码,我们可以了解其如何编码和解码各种数据类型,以及如何优化序列化和反序列化的过程。这对于优化自定义序列化逻辑...
Hessian的源码分析可以帮助我们更深入地理解其工作原理。Hessian服务端的序列化和反序列化过程、HTTP请求处理以及异常处理等都是关键部分。而Spring框架如何与Hessian进行集成,包括服务注册、请求处理和代理创建等...
三、源码分析 1. **序列化与反序列化**:在"**src**"目录下,可以看到"**com.caucho.hessian.io**"包,其中包含了Hessian的序列化和反序列化实现。例如,`Hessian2Input`和`Hessian2Output`类分别用于反序列化和...
《Dubbo源码分析》是一套深入探讨Apache Dubbo这一著名Java开源框架的书籍,旨在帮助开发者更好地理解和应用Dubbo。Dubbo是一个高性能、轻量级的服务治理框架,广泛应用于微服务架构中,以实现服务的发布、发现、...
至于标签"源码",学习Hessian时查看源码有助于理解其内部工作原理,比如数据如何被编码和解码。你可以通过阅读开源的Hessian库,如Caucho Hessian的Java实现,来了解其底层细节。 至于"工具",有一些工具可以帮助...
4. **源码分析** - 分析Hessian的源码可以帮助我们理解其内部实现,比如如何优化序列化过程,如何处理异常情况,以及如何实现类型兼容性等。这对于我们自定义序列化逻辑或优化现有应用的性能都非常有价值。 5. **...
3. **使用源码分析**: Hessian库提供了`HessianProxyFactoryBean`和`HessianServiceExporter`这两个关键类。前者用于客户端创建Hessian服务的代理,后者在服务端用于导出Hessian服务。通过阅读这些类的源码,我们...
读者可能能从中了解到如何集成Hessian到他们的项目中,以及如何通过源码分析来调试和优化Hessian服务。 从压缩包子文件的文件名称“BurlapWS”来看,这可能是与Burlap相关的,Burlap是Hessian的一个变种,也是一个...
此外,分析示例代码可以让我们了解如何在Java应用中集成Hessian,例如: - **服务发布**:如何使用Hessian的Server类来发布一个可远程调用的服务。 - **客户端调用**:客户端如何通过HessianProxyFactory来创建代理...
总的来说,Hessian 4.0.7与Spring 2.5.6的结合使用时出现的bug,可能涉及多个层面,需要综合运用源码阅读、调试技巧以及社区资源来定位和修复。在这个过程中,对Java、Spring和Hessian的深入理解,以及对问题排查的...
本次我们将深入探讨Hessian 4.0.7版本,包括其jar包的使用以及源码分析,帮助开发者更好地理解和应用这个强大的工具。 一、Hessian 4.0.7.jar——核心库 `hessian-4.0.7.jar`是Hessian的核心库文件,它包含了...
通过分析这些测试代码,我们可以更深入地了解Hessian的工作原理,以及如何在不同的场景下使用它。 总之,"自己写了个Hessian" 是一个关于实现Hessian协议的个人项目,涉及到对象序列化、HTTP通信、RPC服务等多个IT...
通过运行和分析`HessianDemo`,你可以更深入地理解Hessian的工作流程,包括如何创建服务端的Hessian服务,如何在客户端使用Hessian Proxy进行调用,以及如何处理返回结果。 总之,Hessian作为一种高效的RPC协议,...
三、Hessian在Spring中的配置 1. 配置服务端: 在服务端,我们需要创建一个Service Bean,然后使用HessianExporter来暴露这个服务。以下是一个简单的示例: ```xml ``` 2. 配置客户端: 在客户端,...