一、简介
Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。
1、是基于什么协议实现的?
基于Binary-RPC协议实现。
2、怎么发起请求?
需通过Hessian本身提供的API来发起请求。
3、怎么将请求转化为符合协议的格式的?
Hessian通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。
4、使用什么传输协议传输?
Hessian基于Http协议进行传输。
5、响应端基于什么机制来接收请求?
响应端根据Hessian提供的API来接收请求。
6、怎么将流还原为传输格式的?
Hessian根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。
7、处理完毕后怎么回应?
处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端。
二、Hessian 调用实例
a) 编写服务端代码
写一个接口:
public interface Hello {
public String seeHello();
}
编写一个实现:
public class HelloImpl implements Hello {
private String helloStr = “Hello World”;
public String getHelloStr() {
return helloStr;
}
public void setHelloStr(String helloStr) {
this.helloStr = helloStr;
}
public String seeHello() {
return helloStr;
}
}
配置WEB-INF.xml 部署到Web容器中:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.alisoft.enet.hessian.HelloImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.alisoft.enet.hessian.Hello</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello.xsp</url-pattern>
</servlet-mapping>
Ok,服务端代码编写完毕。
b) 编写客户端代码
public class HelloServiceTest {
public static void main(String[] args) throws Exception {
String url = “http://localhost/hessian/hello.xsp”;
HessianProxyFactory factory = new HessianProxyFactory();
Hello hello = (Hello) factory.create(Hello.class, url);
System.out.println(“远程调用结果: “ + hello.seeHello());
}
}
执行客户端,即可返回相应的结果:
远程调用结果: Hello World
上面的例子是基于 caucho 提供的Hessian 包的基础上做的,实际上Spring的Hessian调用只是对这个进行简单的封装,便于使用。
三、Hessian机制
那么Hessian就是把Java对象转变成 字节序列,然后通过Http传输到 目标服务器上(主机2),主机2收到这个字节序列后,按照一定的协议标准进行反序列,提交给对应的服务处理。处理完成以后以同样的方式返回数据。
现在我们回头看看例子中的配置(WEB-INF.XML):
配置的Servlet: com.caucho.hessian.server.HessianServlet
对应的参数:接口(home-api):com.alisoft.enet.hessian.Hello
实现(home-class): com.alisoft.enet.hessian.HelloImpl
HessianServlet 中的实现代码如下(略过部分代码):
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
InputStream is = request.getInputStream();
OutputStream os = response.getOutputStream();
//输入流
Hessian2Input in = new Hessian2Input(is);
SerializerFactory serializerFactory = getSerializerFactory();
in.setSerializerFactory(serializerFactory);
//输出流
AbstractHessianOutput out;
int major = in.read();
int minor = in.read();
out = new Hessian2Output(os);
out.setSerializerFactory(serializerFactory);
_homeSkeleton.invoke(in, out);
整个执行步骤如下:
l 接收输入流,并通过SerializerFactory转化为 Hessian 特有的 Hessian2Input
l 设置输出流,并通过SerializerFactory转化为 Hessian 特有的 Hessian2Output
l 根据配置的接口和实现参数,调用服务,并把结果写入到输出流 Hessian2Output中
l Out.close()
Hessian远程访问基于序列化和反序列化的方式。当程序运行时,程序所创建的各种对象都位于内存中,当程序运行结束,这些对象就结束了生命周期。对象的序列化主要有两种用途:
l 把对象的字节序列永久地保存到硬盘上,通常是放在一个文件中。
l 在网络上传输对象的字节序列
相关推荐
在图像处理领域,多尺度Hessian滤波器是一种高级的图像增强技术,它主要用于检测图像中的线性结构,特别是对于微弱或者噪声较大的图像特征有很好的识别能力。这个技术是基于数学形态学的Hessian矩阵理论,由V.S. ...
赠送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-...
- 在实际开发中,我们可能会需要编写一些辅助工具类来处理Hessian的相关操作,例如Hessian2Input和Hessian2Output,它们用于读写Hessian序列化的二进制流。 6. **安全性与优化**: - 虽然Hessian协议效率高,但其...
在IT领域,尤其是在医学图像分析中,Hessian矩阵是一个重要的数学工具,用于图像特征检测,特别是在血管分割的应用中。本文将深入探讨标题和描述中提到的"基于Hessian矩阵增强的心血管分割"这一主题。 Hessian矩阵...
Hessian是一种高效的二进制序列化协议,常用于实现轻量级的远程过程调用(RPC)。这个案例涉及到了Hessian在Java和Python之间的跨语言通信。以下是对Hessian技术及其应用的详细解释: 1. **Hessian简介**:Hessian...
在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...
Hessian矩阵是图像处理和计算机视觉领域中一个重要的数学工具,尤其在特征检测和结构分析中扮演着关键角色。在本项目中,它被应用于血管增强,这是一个在医学成像和图像分析中常见的任务,目的是突出血管结构,以...
本文将详细探讨"Jerman增强滤波器",它是一种基于Hessian矩阵的滤波器,旨在突出图像中的血管结构。Hessian矩阵在图像处理中起到关键作用,因为它可以有效地检测图像的局部特征,特别是边缘和曲线。 首先,我们来...
本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过学习Hessian,我们可以更有效地处理数据传输,提高应用性能。 首先,让我们理解什么是序列化。...
Java Hessian远程调用是一种高效的、轻量级的RPC(Remote Procedure Call)解决方案,它允许Java应用程序通过网络进行跨语言的通信。Hessian是BEA Systems开发的一种二进制Web服务协议,它提供了序列化和远程方法...
这篇教程主要探讨了如何利用MATLAB编程环境以及Hessian矩阵来增强2D和3D图像中的血管脊状结构。Hessian矩阵是一种数学工具,用于计算图像中像素点的二阶导数,从而帮助识别图像的边缘和特征点。 首先,我们要理解...
在图像处理领域,Hessian Frangi滤波算法是一种用于血管检测和结构分析的高级技术,尤其在医学成像中有着广泛的应用。它基于Hessian矩阵,可以有效地检测图像中的线性和圆状结构。本篇文章将深入探讨如何使用Python...
Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation, RMI)机制。它结合了HTTP协议的可扩展性和Java序列化机制的易用性,使得在...
这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...
在这个“hessian服务端 客户端 可运行”的压缩包文件中,很可能包含了一个完整的示例,让我们来详细探讨Hessian在服务端和客户端的实现及其重要性。 首先,我们来理解一下Hessian服务端。在Java中,Hessian服务端...
在IT行业中,尤其是在移动开发领域,Hessian是一种广泛使用的二进制协议,它允许远程对象调用(Remote Object Invocation)。本知识点主要关注的是在Android平台上,如何使用Hessian进行异步请求访问,以便提高应用...
赠送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-...
在IT行业中,Hessian是一种轻量级的二进制序列化协议,主要用于远程方法调用(RMI)和Web服务。Hessian由Caucho Technology开发,它的设计目标是提供比XML更快、更简洁的数据传输方式,从而提高网络通信效率。在Java...
在图像处理领域,Hessian矩阵是一种非常重要的工具,尤其在边缘检测和纹理分析中发挥着关键作用。本项目“hessian_homework1_hessian_matlab中心线_hessianmatlab_”是利用MATLAB实现的Hessian矩阵计算,用于寻找...