`
javayestome
  • 浏览: 1043763 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hession入门介绍

阅读更多

Hessian是一个用于连接网络服务的二进制协议,是Resin的开源产品。Hessian是一个非常简单的协议,使用了J2ME的设备如移动电话都可以使用它连接到Resin服务,因为它的协议简单、使用方便性及功能的强大,它也可以使用到EJB服务中。

Hessian简单使用介绍,下面的本篇文章的目录结构:

1、Hessian客户端

2、Hessian服务端

1)、在Hessian 3.0中配置依赖性注入

2)、在标准的web.xml中配置

3、Hessian序列化

4、Hessian与大二进制数据

5、Hessian的调试

6、Hessian流

7、用于移动电话的Hessian客户端

下面分别对它进行介绍:

1、Hessian客户端

在JAVA客户端中使用Hessian就相当于是调用JAVA本地方法一样,HessianProxyFactory创建代理协议的过程就像是调用一个普通的JAVA对象,如果远程连接失败,会抛出协议连接失败的异常,要使用HessianProxyFactory,要求JDK版本在1.3及以上。

每一个服务,都要求有一个普通的JAVA接口,用来描述这个服务。以下的JAV断代码hello返回的是一个字符串String类型,Hessian本身是支持序列化,因而任何JAVA类型都可以返回。

Basic服务代码:

以下是一个标准的Hessian客户端示例,客户中创建了一个HessianProxyFactory工厂,客户端使用这个工厂,根据提供的目标URL及为这个接口提供的API,创建客户端Stubs,返回的对象就是一个引用了接口API的Stub.

用于Basic服务的客户端代码:

就是这么简单,使用客户端并不会增加程序的复杂程度,服务端的方法可以使用任何JAVA类型的参数以及任意类型的返回结果。

2、Hessian服务端

目前很多的Hessian服务端,都会使用Resin-CMP或者是Resin-EJB,因为使用这些可以使用EJB本身的优点,Hessian序列化后的二进制,使得他们可以通过扩展HessianServlet得以实现。

任何的public方法,都被认为是一个服务方法,因而在Hessian服务端中增加方法,就相当于是在一个普通的JAVA类中增加一个方法一样简单。

因为服务是作为一个Servlet引用,它可以ServletContext中你所熟悉的一些servlet数据,就像使用一个普通的servlet一样。

Hello Service源码:

1)、在Hessian 3.0中配置依赖性注入

resin-web.xml:

2)、在标准的web.xml中配置

既然HessianServlet是一个标准的servlet,那么他就可以配置到标准的servlet配置中。

web.xml:

3、Hessian的序列化

Hessian的类可以用于序列化与反序列化,Hessian的序列化是它协议成的基础,通过控制序列化,让应用程序使用Hessian比普通的应用程序的代理接口协议更加有效率。

序列化示例:

反序列化示例:

当序列化的JAVA对象不是JAVA基本类型或者String时,请确认待序列化的类要继承接口java.io.Serializable。

4、Hessian与大二进制数据

当分布式应用需要发布比较大的二进制时,通过使用InputStream而避免分配大字节数组,会更有效率,只有这个方法的final参数可以是InputStream,因为在调用的过程中会读取这些数据,例如,一个文件下载服务使用Hessian会更加有效率。

在下面的示例中,客户端需要使用Hessian协议,因为代理接口会在调用返回之前,会请求缓存整个文件。

文件上传API:

如果结果是InputStream,需要注意的是在finally块中别忘了加了InputStream.close(),因为Hessian只有要读出所有的数据以及数据流关闭之后,才会关闭基于HTTP流。

文件下载API:

JAVA下载代码:

5、Hessian的调试

要调试Hessian需要3.1.3及以后的版本。

启动Hessian的servlet调试需要两步,第一步是将"debug"初使化参数设置到web.xml中,第二步将java.util.logging的为com.caucho.hessian.servlet的级别设置为"fine",在Resin服务中的配置看起来可能会是下面这样:

调试输出示例如下:

6、Hessian流

Hessian 3.1.3介绍了一个流API,应用程序可以使用流来发期周期性数据,例如Comet-style闪存监控应用中定期接受更新。

流示例代码:

流可以与Resin提供的Comet-style servlets一起使用。

7、用于移动电话的Hessian客户端

Hessian可以用于即使是非常小的JAVA设备,以下取自com.caucho.hessian.client的类,可以放到j2me.jar中:

MicroHessianInput

MicroHessianOutput

HessianRemote

HessianServiceException

HessianProtocolException

以下是一个演示了如何使用移动电话作为客户端,比使用代理要复杂一些,因为客户端需要负责建立连接,并且写数据:

Hello, world:

分享到:
评论

相关推荐

    Hessian 入门介绍

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

    hessian入门小例子

    这个“Hessian入门小例子”是帮助开发者理解如何在实际项目中应用Hessian的一种方式。下面我们将深入探讨Hessian协议、它的特点、以及如何在Java环境中设置和使用Hessian服务和客户端。 首先,让我们了解Hessian的...

    Hessian学习入门实例

    这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet...

    Hessian入门案例源代码

    在“Hessian入门案例源代码”中,我们可以通过分析HessianDemo这个项目来学习如何使用Hessian。源代码通常包括服务器端和客户端两部分,它们展示了如何定义服务接口、实现服务、发布服务以及如何调用这些服务。 1. ...

    hessian入门实例,导入就可以直接运行

    这个"**hessian入门实例**"旨在帮助初学者快速理解并应用Hessian技术,通过导入到MyEclipse这样的集成开发环境中,可以直接运行示例代码,从而直观地了解Hessian的工作原理。 首先,我们要理解什么是RPC。RPC允许一...

    hessian入门案例

    Hessian是一种二进制Web服务协议,它提供了一种轻量级、高效的远程方法调用(RPC)方式。Hessian的出现旨在解决XML-RPC在数据传输时的效率问题,因为XML格式的数据在网络上传输时体积较大,解析速度较慢。下面我们将...

    Hessian入门引路

    本篇文章将带你入门Hessian,了解其基本概念、工作原理以及如何在实际项目中应用。 首先,我们来理解一下Hessian的核心概念。Hessian是基于HTTP的,它使用一种高效的二进制格式来序列化和反序列化Java对象,这样就...

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

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

    轻量级远程服务调用Hessian的入门实例和与Spring整合的实例.zip

    一、Hessian入门实例 Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如`HelloService`,包含一个或多个方法,这些方法将被远程调用。然后,我们需要实现这...

    Hessian远程调用框架学习一

    本教程将引导你入门Hessian,通过一个简单的JAVA demo来理解其工作原理和应用。 首先,我们需要了解Hessian的基本概念。Hessian是由Caucho Technology开发的一种二进制Web服务协议,它提供了对Java对象序列化和反...

    hession之经典入门例子

    《Hession经典入门实例解析》 Hession是一种高效的RPC(Remote Procedure Call)协议,它能够将Java、.NET、Python等语言之间的方法调用转换为HTTP请求,实现跨语言服务调用。本篇文章将深入探讨Hession的基础知识...

    hession入门及注入spring

    在本教程中,我们将介绍如何创建一个基本的Hessian服务器,并将其集成到Spring框架中。 ### 1. 创建Hession服务器端 #### 1.1 定义服务接口 首先,我们需要定义一个服务接口,例如`Hello`,它包含了客户端可以调用...

    resin 入门基础教程.pdf

    - Resin 支持远程过程调用(Remote Procedure Call, RPC),包括 Hessian 等协议,方便不同应用间的通信。 #### 二十一、消息传递 - **HMTP** - HMTP 是 Resin 提供的一个消息传递协议,用于在分布式环境中发送...

    dubbo入门示例源码

    4. **协议(Protocol)**:Dubbo 支持多种通信协议,如 dubbo、http、hessian 等,用于定义服务的调用方式。 5. **接口与实现(Interface & Implementation)**:服务的定义通常以 Java 接口的形式存在,服务提供者...

    OpenCV3编程入门_毛星云编著_电子工业出版.7z

    特征检测则涉及边缘检测(如Canny、Sobel、Prewitt算子)、角点检测(如Harris、Shi-Tomasi、Hessian矩阵检测)以及关键点检测(如SIFT、SURF、ORB),这些技术在目标识别、追踪等领域有广泛应用。 OpenCV3在机器...

    矩阵计算快速入门(matrix cookbook)

    9. **结构化矩阵的导数**:针对特定类型的矩阵,如对称矩阵、Hessian 矩阵等,提供了导数的计算方法。 #### 四、逆矩阵 1. **基本概念**:这部分介绍了逆矩阵的基本概念和性质。 2. **精确关系**:详细讨论了逆矩阵...

    Dubbo入门教程

    ### Dubbo入门教程知识点梳理 #### 一、电商系统架构演变 ##### 1.1 单一应用架构(ORM) **定义与特点:** - **单一应用架构**是指早期网站流量较小时,为了减少部署节点和成本,所有的功能(如下单、支付等)都被...

    dubbo+zookeeper入门实例

    【标题】"dubbo+zookeeper入门实例"是一个关于使用Dubbo框架与Zookeeper结合实现服务发现和服务调用的基础教程。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,而Zookeeper则是一个分布式服务协调...

    Android入门基础培训.pptx

    【Android网络通信】中,Volley、XUtils、fjFrameforandroid、Hessian和OkHttp等库提供了网络请求的便利,它们各有特点,适应不同的网络需求。 【其他】部分提到了NDK,它允许开发者使用C/C++编写性能关键部分的...

    matlab从入门到精通

    《MATLAB从入门到精通》是一本全面介绍MATLAB编程技术的教程,旨在帮助初学者快速掌握MATLAB的基础知识,并逐步提升至高级应用水平。MATLAB(Matrix Laboratory)是一种强大的数学计算软件,广泛应用于工程计算、...

Global site tag (gtag.js) - Google Analytics