一、 Hessian原理简介:
Hessian
是由
caucho
提供的一个
基于
Binary-RPC
协议实现
的远程通讯
library
。在使用过程中,请求端
通过
Hessian
本身提供的
API
来向服务端发起请求,
Hessian
通过其自定义的串行化机制将请求信息进行序列化,产生二进制流,然后
用Http
协议进行传输。
响应端根据
Hessian
提供的
API
来接收请求,
而后,Hessian
根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。
处理完毕后直接返回,
hessian
将结果对象进行序列化,传输至调用端。
二、 Hessian
调用实例
1. 服务端实体类:
package com.shhx.model;
import java.io.Serializable;
public class PlaneBean implements Serializable {
private String color;
private String length;
private String owner;
private static final long serialVersionUID = 1L;
public PlaneBean() {
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getLength() {
return length;
}
public void setLength(String length) {
this.length = length;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
}
2.服务端接口:
package com.shhx.service;
import com.shhx.model.PlaneBean;
public interface IBasic {
public String getAirLine();
public PlaneBean getPlaneBean();
}
3.服务端接口实现类:
package com.shhx.service;
import com.caucho.hessian.server.HessianServlet;
import com.shhx.model.PlaneBean;
public class IBasicImpl extends HessianServlet implements IBasic {
private String airline= "Shanghai - Shenzhen";
public String getAirLine() {
return airline;
}
public PlaneBean getPlaneBean() {
PlaneBean plane = new PlaneBean();
plane.setColor("silver");
plane.setLength("30");
plane.setOwner("MU");
return plane;
}
}
4. web.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/remoting-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>hessian</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.shhx.service.IBasicImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.shhx.service.IBasic</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hessian</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>
</web-app>
5. WEB-INF下 remoting-servlet.xml 的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 定义普通bean实例-->
<bean id="iBasicImpl" class="com.shhx.service.IBasicImpl" />
<!-- 使用HessianServiceExporter 将普通bean导出成Hessian服务-->
<bean name="/HessianRemoting" class="org.springframework.remoting.caucho.HessianServiceExporter">
<!-- 需要导出的目标bean-->
<property name="service" ref="iBasicImpl" />
<!-- Hessian服务的接口-->
<property name="serviceInterface" value="com.shhx.service.IBasic" />
</bean>
</beans>
6. 客户端要有对应的实体类和接口,客户端代码:
package com.shhx.service;
import java.net.MalformedURLException;
import com.caucho.hessian.client.HessianProxyFactory;
import com.shhx.model.PlaneBean;
public class BasicClient {
/**
* @param args
*/
public static void main(String[] args) {
String url = "http://127.0.0.1:8080/hessianDemo/hessian";
HessianProxyFactory factory = new HessianProxyFactory();
try {
IBasic basic = (IBasic) factory.create(IBasic.class, url);
System.out.println(basic);
System.out.println("airline: " + basic.getAirLine());
PlaneBean plane = basic.getPlaneBean();
System.out.println("color: " + plane.getColor());
System.out.println("length: " + plane.getLength());
System.out.println("owner: " + plane.getOwner());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
客户端运行结果如下:
HessianProxy[http://127.0.0.1:8080/hessianDemo/hessian]
airline: Shanghai - Shenzhen
color: silver
length: 30
owner: MU
三、
在进行基于Hessian的项目开发时,应当注意以下几点:
▲JAVA服务器端必须具备以下几点:
-包含Hessian的jar包;
-设计一个接口,用来给客户端调用;
-实现该接口的功能;
-配置web.xml,配好相应的servlet;
-对象必须实现Serializable 接口;
-对于复杂对像可以使用Map的方法传递;
▲客户端必须具备以下几点:
-java客户端包含Hessian.jar的包;
-具有和服务器端结构一样的接口。包括命名空间都最好一样;
-利用HessianProxyFactory调用远程接口。
四、 Hessian特点总结:
-整个jar很小,200多K,3.1版本的,当然,我下载的for java的版本;
-配置很简单,基本上不需要花什么经历就配置出来了;
-功能强大,可以将soap抛开,也可以把EJB抛开,采用二进制来传递对象;
-拥有多种语言支持,python c++ .net 甚至 flex 都可以做为client。
下载地址: http://hessian.caucho.com/
分享到:
相关推荐
通过学习Hessian,我们可以更有效地处理数据传输,提高应用性能。 首先,让我们理解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Java中,如果一个类实现了Serializable接口,那么该类...
Hessian是一种二进制协议,它被设计用于提高远程调用的...通过学习和实践这个Hessian demo,你将能够更好地应对涉及远程调用和数据交换的问题。无论是Java开发者还是C++开发者,Hessian都是值得了解和掌握的一项技术。
下面我们将深入探讨Hessian的学习、实例以及其在实际应用中的使用。 首先,Hessian的吸引力在于它的二进制格式,这使得数据在网络上传输时占用更少的带宽。相比于XML或JSON等文本格式,二进制格式的数据通常更小,...
在这个“hessian学习实例”中,我们将深入探讨Hessian框架的使用,特别是如何将其与Spring框架集成,以及如何构建server端和client端。 首先,让我们理解Hessian的工作原理。Hessian基于HTTP协议,它将Java对象序列...
这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet...
4. **Hessian客户端和服务器实现**:理解如何在Java或其他支持的语言中实现Hessian客户端和服务端是学习的关键。这包括创建服务端的HessianServlet,以及客户端的HessianProxyFactory,用于创建远程服务的代理对象。...
Hessian学习笔记 Hessian是一种基于Binary-RPC协议实现的远程通讯library,由Caucho提供。下面是Hessian的学习笔记: 一、简介 Hessian是基于Binary-RPC协议实现的远程通讯library,用于实现远程过程调用(RPC)...
在"Flex + Hessian 学习笔记(二)"中,我们可能涉及以下几个关键知识点: 1. **Flex客户端开发**:Flex项目通常使用MXML和ActionScript编写,MXML用于声明式地构建UI,而ActionScript则用于编写应用程序逻辑。开发者...
在博客链接《iteye博客:550771》中,作者可能详细讨论了Hessian的使用方法、优缺点以及实战案例,可以作为学习Hessian的参考资料。 **六、Hessian的使用场景** 1. **微服务通信**:在微服务架构中,Hessian可以...
**WebService的轻量级实现——Hessian学习笔记** 在IT行业中,WebService作为一种常见的跨平台、跨语言的通信机制,被广泛应用于系统间的交互。然而,传统的SOAP(Simple Object Access Protocol)协议实现的...
Hessian是一种高效的二进制序列化协议,常用于实现轻量级的远程过程调用(RPC)。这个案例涉及到了Hessian在Java和Python之间的跨语言通信。以下是对Hessian技术及其应用的详细解释: 1. **Hessian简介**:Hessian...
这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...
此外,还可以结合其他图像处理技术,如区域生长、水平集或者机器学习算法,进一步优化分割结果。 文件"基于Hessian矩阵增强的心血管分割"可能包含了实现这一方法的详细步骤、算法描述、实验结果以及与其他方法的...
Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation, RMI)机制。它结合了HTTP协议的可扩展性和Java序列化机制的易用性,使得在...
在图像处理领域,多尺度Hessian滤波器是一种高级的图像增强技术,它主要用于检测图像中的线性结构,特别是对于微弱或者噪声较大的图像特征有很好的识别能力。这个技术是基于数学形态学的Hessian矩阵理论,由V.S. ...
《Hessian应用详解》 Hessian,一种轻量级的二进制协议,因其高效、简单的特点,在分布式服务中被广泛应用。它允许开发者在HTTP上透明地调用远程方法,就像是本地方法调用一样,极大地提高了开发效率和系统性能。...
- 在实际开发中,我们可能会需要编写一些辅助工具类来处理Hessian的相关操作,例如Hessian2Input和Hessian2Output,它们用于读写Hessian序列化的二进制流。 6. **安全性与优化**: - 虽然Hessian协议效率高,但其...
用户只需按照说明运行这些文件,就可以快速体验Hessian的通信过程,这对于学习和测试Hessian协议非常有帮助。 Hessian的优势在于它的二进制编码,相比于基于文本的协议(如JSON或XML),它能显著减少网络传输的数据...