`

Hessian介绍

阅读更多

相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。下面演示一个简单的Hessian示例程序。

Hessian的下载和安装

Hessian的下载和安装请按如下步骤进行:

(1)登http://www.caucho.com/hessian/下载Hessian的Java二进制包,笔者成书之时,Hessian的最新版本是Hessian 3.0.13。下载hessian-3.0.13.jar文件。

(2)将该文件复制到名为hessian的Web应用下,所有的jar文件都应该放在WEB-INF/lib下,该文件也不例外。

(3)为了编译Hessian客户端程序,建议将hessian-3.0.13.jar添加到环境变量里。

Hessian服务器端

推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。服务接口如下:

[code=javascript]//服务接口
public interface Hello
{
//方法声明
public String hello(String name);
}[/code]

接口的实现类如下:

[code=javascript]//服务实现类,实现Hello接口
public class HelloImpl implements Hello
{
public String hello(String name)
{
return "hello " + name + "欢迎学习Hessian";
}
}[/code]

这个接口和实现类简单得难以置信。它们没有任何特别之处,这正是Hessian的魅力,代码污染降低到最小。当然,只是示例程序,所以服务也相当简单。Hessian要求远程服务通过Servlet暴露出来,必须在web.xml文件中配置该Servlet。web.xml的详细配置如下:

[Copy to clipboard]
CODE:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Web配置文件的文件头,包含dtd等信息-->
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- Web配置文件的根元素-->
<web-app>
<servlet>
<!-- 配置Servlet名,后面根据该名完成远程服务映射-->
<servlet-name>hessianService</servlet-name>
<!-- Hessian远程服务需要HessianServlet暴露Hehes-->
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<!-- 随应用启动而启动>
<load-on-startup>1</load-on-startup>
<!-- 使用init-param配置服务的实现类-->
<init-param>
<param-name>service-class</param-name>
<param-value>lee.HelloImpl</param-value>
</init-param>
</servlet>
<!-- 映射Servlet的url,该Servlet的url就是Hessian服务名-->
<servlet-mapping>
<servlet-name>hessianService</servlet-name>
<!-- 远程服务名为hessianService-->
<url-pattern>/hessianService</url-pattern>
</servlet-mapping>
</web-app>

将刚才的接口和实现放Web应用的WEB-INF/class路径下,编译它们。然后将此web.xml文件放在WEB-INF下,启动Web服务器。笔者使用的Web服务器是Tomcat5.0.28,Tomcat的端口是8888。则远程服务的url为http://localhost:8888/hessian/hessianService。

Hessian客户机端

Hessian的服务可以用HessianProxyFactory工具类调用,还可以在小型智能设备上调用。HessianProxyFactory的create方法,用于获取Hessian服务的远程引用。Hessian的客户端如下:

[code=javascript]public class HessianClient
{
public static void main(String []args) throws Exception
{
//Hessian服务的url
String url = "http://localhost:8888/hessian/hessianService";
//创建HessianProxyFactory实例
HessianProxyFactory factory = new HessianProxyFactory();
//获得Hessian服务的远程引用
Hello d = (Hello) factory.create(Hello.class, url);
//调用远程服务。
System.out.println("下面调用Hessian服务: " + d.hello("yeeku"));
}
}[/code]

客户端仅仅需要Hello接口,而无须真实的实现类。如果使用小型智能设备作为客户端的运行环境,客户端代码片段如下:

[code=javascript]//创建Hessian输入流,用于输入请求
MicroHessianInput in = new MicroHessianInput();

//Hessian服务的url
String url = "http://localhost:8888/hessian/hessianService";

//创建HttpSConnection实例
HttpConnection c = (HttpConnection) Connector.open(url);

//设置参数提交方式
c.setRequestMethod(HttpConnection.POST);

//打开输出流,准备调用服务器方法
OutputStream os = c.openOutputStream();

//以输出流创建MicroHessianOutput对象,该对象用于调用hessian的方法
MicroHessianOutput out = new MicroHessianOutput(os);

//调用远程方法:hello是方法名,yeeku是参数
out.call("hello", "yeeku");

os.flush();

//打开输入流,准备接收返回值
is = c.openInputStream();

//以输入流为参数,创建MicroHessianInput对象
MicroHessianInput in = new MicroHessianInput(is);

//获得返回值
Object value = in.readReply("yeeku");[/code]

分享到:
评论

相关推荐

    Hessian 使用小结

    - Hessian介绍:http://www.caucho.com/resin-3.0/protocols/hessian.xtp - Hessian Overview:http://hessian.caucho.com/doc/hessian-overview.xtp - Hessian(3.0)序列化及大数据处理:...

    hessian矩阵介绍

    "hessian矩阵介绍" Hessian矩阵是数学中一个重要的概念,特别是在多元函数极值问题中,它扮演着关键性的角色。在这篇文章中,我们将详细介绍Hessian矩阵的定义、性质、应用以及与极值问题的关系。 定义:Hessian...

    Hessian 入门介绍

    **Hessian入门介绍** 在IT领域,Hessian是一种二进制Web服务协议,它由Caucho Technology开发,主要用于提供轻量级、高效的远程过程调用(RPC)机制。Hessian的目标是简化分布式系统间的通信,减少网络传输的数据量...

    hessian

    在【描述】中提到的博客链接,可能详细介绍了如何使用Hessian进行客户端和服务端的交互。通常,使用Hessian的步骤包括: 1. **安装库**:在项目中引入Hessian的相应库,例如对于Java项目,可以添加Caucho的Hessian库...

    dubbo-hessian协议http请求demo(java)

    本示例将介绍如何在Java中利用Dubbo的Hessian协议进行HTTP请求的实现。 首先,我们需要理解Hessian协议的基本原理。Hessian是一种高效的序列化协议,它将Java对象转换为二进制流,通过网络传输,然后在另一端还原为...

    Hessian协议格式

    下面将详细介绍 Hessian 请求报文和应答报文的结构和格式。 一、Hessian 请求报文结构 Hessian 请求报文结构主要由四部分组成:魔数字、消息头、方法名、参数列表。 1. 魔数字:magic number,用于标识 Hessian ...

    hessianServer

    下面将详细介绍Hessian服务端的相关知识点。 1. **Hessian协议**: Hessian是Adobe公司开发的一种高效的二进制Web服务协议。它将数据序列化为紧凑的字节流,比XML更加节省带宽和CPU资源,提高了网络通信的效率。...

    hessian-example

    在博客文章"http://blog.csdn.net/u010397369/article/details/12176961"中,作者可能详细介绍了如何设置Hessian环境,包括安装必要的库,编写服务端和客户端代码,以及解决可能出现的问题。文章可能还涵盖了性能...

    hessian实现远程调用

    下面我们将详细介绍Hessian的实现原理以及如何在实际开发中运用它进行远程调用。 首先,Hessian基于HTTP协议,使用二进制序列化来减少数据传输量,从而提高通信效率。它支持Java、C++等多种语言,使得跨语言的远程...

    一个简单的Hessian示例

    一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。

    hessian通讯的安卓实现的简单DEMO

    下面将详细介绍Hessian在Android中的应用以及相关知识点。 1. **Hessian协议**:Hessian由Caucho公司开发,它的主要优点是数据传输紧凑、高效,同时能够处理各种复杂的对象类型,包括Java和.NET的对象。它采用了二...

    理解RESTful架构、Hessian简介、机制、Webservice及cxf介绍

    它提供了高效的远程调用能力,相比基于文本的协议(如SOAP),Hessian能更节省带宽和提高通信效率。Hessian库可以在不同平台上使用,支持多种编程语言,简化了跨语言的远程服务调用。 WebService是一种基于XML的、...

    hessian vc实现

    本文将详细介绍如何在VC中实现Hessian客户端,并提供相关知识点。 首先,理解Hessian协议的基础知识是必要的。Hessian是一种二进制格式,它能将Java或.NET对象编码为字节流,然后在网络上传输,接收端再将这些字节...

    Hessian的使用配置步骤

    远程方法调用的比较,Hessian方法的介绍和相关配置.Hessian是一个轻量级的remoting on http工具,采用的是Binary RPC协议,所以它很适合于发送二进制数据,同时又具有防火墙穿透能力。Hessian一般是通过Web应用来提供...

    Hessian工程实例

    1. **Hessian协议介绍**:Hessian是一种轻量级的基于HTTP的二进制序列化协议,它将Java对象转换为二进制流进行网络传输,从而提高了传输效率和性能。与XML-RPC相比,Hessian更节省带宽,因为它是二进制格式而非文本...

    Hessian Binary Web Service Protocol远程接口调用入门Demo

    本教程将通过一个入门Demo来介绍如何使用Hessian进行远程接口调用。 首先,让我们理解Hessian的优势。与XML-RPC相比,Hessian使用二进制编码,因此在网络传输时占用的带宽更少,解析速度更快。此外,Hessian支持...

    闲着没事Hessian开发WebService的总结(一)

    标签“源码”和“工具”暗示文章可能包括实际的代码示例和对Hessian框架的使用工具的介绍。读者可能能从中了解到如何集成Hessian到他们的项目中,以及如何通过源码分析来调试和优化Hessian服务。 从压缩包子文件的...

    C#中Hessian的使用例子

    本教程将详细介绍C#中Hessian的使用及其相关知识点。 首先,Hessian协议设计的目标是简洁高效,它能将常见的数据类型如字符串、整型、浮点型等转换为二进制格式,从而在网络传输时占用更少的带宽。这种协议特别适合...

    Springmvc+Hibernate+Hessian架包整合

    本篇将详细介绍这三个组件以及它们如何协同工作,帮助开发者构建高质量的分布式应用程序。 首先,Spring MVC是Spring框架的一个模块,专注于Web应用的开发。它提供了一个灵活的MVC(Model-View-Controller)架构,...

    自己写了个Hessian

    博客链接可能详细介绍了博主是如何从零开始实现这些功能的,包括遇到的问题、解决方案以及性能测试结果。通过阅读这个博客,我们可以学习到如何在实际项目中应用Hessian协议,以及如何优化自定义实现。 标签 "源码...

Global site tag (gtag.js) - Google Analytics