`

Hessian与Spring的整合

阅读更多

 

一、概述

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据, Hessian主要用作面向对象的消息通信,Hessian的初衷是支持动态类型,格式紧凑,跨语言。

 

二、几种Remoting实现的比较 

Spring支持的Remoting实现技术是非常多的,虽然Spring屏蔽了这些技术使用上的差异,但是选择一个合适的Remoting技术仍然对系统有非常积极的作用,下面就来讲述这些实现技术的优缺点。 

(1) RMI:RMI使用Java的序列化机制实现调用及返回值的编组(marshal)与反编组(unmarshal),可以使用任何可序列化的对象作为参数和返回值。其缺点是RMI只能通过RMI协议来进行访问,无法通过HTTP协议访问,无法穿透防火墙。

(2) Hessian:Hessian也是将网络传输的对象转换为二进制流通过Http进行传递,不过它是使用自己的序列化机制实现的编组与反编组,其支持的数据类型是有限制的,不支持复杂的对象。Hessian的优点是可以透过防火墙。

(3) Burlap:Burlap是将网络传输的对象转换为XML文本格式通过Http进行传递,支持的对象与Hessian相比更少。XML一般比二进制流占用空间大,在网络上传递所需要的时间比二进制流长,XML的解析过程也会耗用更多的内存。Burlap可以穿透防火墙,而且由于传输的格式是XML文本,可以与其他系统(比如.NET)集成,从某种程度来讲,Burlap是一种不标准的WebService。 

(4) HttpInvoker:HttpInvoker将参数和返回值通过Java的序列化机制进行编组和反编组,它具有RMI的支持所有可序列化对象的优点。 Http Invoker是使用Http协议传输二进制流的,而同时又具有Hessian、Burlap的优点。

 

三、Hessian与Burlap比较

Hessian和Burlap是两个由Caucho技术提供的解决方案。它们允许轻量级的HTTP远程服务,Hessian和Burlap都是基于HTTP的,所以它们不会存在防火墙的问题,尽可能地保持API和通讯协议的简化从而达到简化web service的目的。

虽然Hessian和Burlap都旨在解决同一问题,但它们还是有一些不同。Hessian和RMI一样都是用二进制消息进行C/S通讯,但是和RMI不同的是它所使用的二进制消息可以移植到包括PHP,Python,C++和C#在内的语言平台上。当然,Java不行。另一方面,Burlap是基于XML的远程技术,它可以自动地移植到能够解析XML的任何语言上,而且它比Hessian更加易读。但和其他基于XML的远程技术(SOAP或XML-RPC)不同,Burlap的消息结构非常简单而且不需要一个外部的定义语言(WSDL或IDL)。

Hessian和Burlap都是轻量级的,每一个都是84k的jar文件,而且不需要除JRE外的任何库依赖。非常适于在有内存限制的环境中使用,例如Applet或手提设备上。

在绝大多数情况下,Hessian和Burlap是一样的,唯一的不同在于Hessian消息是二进制的,Burlap消息是XML格式的。Hessian的优势在于可以获得更多的带宽。如果你更在于可读性(便于调试),Burlap的XML就更适合你。

 

四、Hessian需要注意的几个问题

1、JAVA服务器端必须具备以下几点: 

·包含Hessian的jar包 

·设计一个接口,用来给客户端调用 

·实现该接口的功能 

·配置web.xml,配好相应的servlet 

·对象必须实现Serializable 接口 

·对于复杂对象可以使用Map的方法传递 

.对象最好有自己的序列表ID。

 

2、客户端必须具备以下几点: 

·java客户端包含Hessian.jar的包

·具有和服务器端结构一样的接口和实体类。

包括命名空间都最好一样 ·利用HessianProxyFactory调用远程接口。

 

五、服务器的配置

1、在web.xml中定义Spring的调试分配器:

<!-- 自动装配ApplicationContext的配置信息 -->
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/applicationContext.xml
  </param-value>
 </context-param>

 

<servlet>
  <servlet-name>hessian</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
             /WEB-INF/hessian/hessian-servlet.xml
            </param-value>
        </init-param>
  <load-on-startup>2</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>hessian</servlet-name>
  <url-pattern>/hessian/*</url-pattern>
 </servlet-mapping>

2、applicationContext.xml里的配置

<bean id="userDaoImpl" class="demo.dao.impl.UserDaoImpl"></bean>
 
 <bean id="userServiceImpl" class="demo.service.impl.UserServiceImpl">
  <property name="userDao" ref="userDaoImpl"></property>
 </bean>

3、hessian-servlet.xml里的配置

<bean name="/userService" class="org.springframework.remoting.caucho.HessianServiceExporter">
  <!-- 定义业务接口 -->
  <property name="service" ref="userServiceImpl" />
  <!-- 定义服务接口 -->
  <property name="serviceInterface" value="demo.service.IUserService" />
 </bean>

4、配置完成后,运行工程,访问http://localhost:8888/HessianWeb/hessian/userService,如果页面提示405,则表示配置成功。

 

六、Java的客户端的调用:

1、客户端要求具有和服务器端结构一样的接口和实体类,一般的做法是将服务器端的接口和实体类打成jar包,客户端直接引用jar包。

2、客户端调用类的写法:

String url = "http://localhost:8888/HessianWeb/hessian/userService";
  HessianProxyFactory factory = new HessianProxyFactory();
  IUserService userService = null;
  try {
   userService = (IUserService) factory.create(IUserService.class, url);
  } catch (MalformedURLException e) {
   e.printStackTrace();
  }
  
  System.out.println("无参数: "+userService.getUserName());
  System.out.println("有参数: "+userService.getUser(1,"niuwanxiang").getUserName());

 

转自:http://hi.baidu.com/niuwan_xiang/blog/item/d7d157951376ec90a877a40d.html

分享到:
评论

相关推荐

    Hessian与spring整合

    当我们谈论“Hessian与Spring整合”时,通常是指将Hessian作为服务通信的机制,结合Spring框架来构建分布式服务系统。这种整合有以下几个关键点: 1. **服务提供者(Service Provider)**:首先,我们需要在服务端...

    Hessian与Spring整合需要jar包

    在将Hessian与Spring进行整合时,我们需要确保引入了正确的jar包。这些jar包通常包括以下几个核心组件: 1. **Hessian库**:这是实现Hessian RPC的基础,包含了序列化和反序列化的类以及远程调用的相关接口。主要的...

    hessian与spring整合的jar包

    当我们将Hessian与Spring进行整合时,主要目标是利用Spring的依赖注入(Dependency Injection, DI)和组件管理能力来简化Hessian服务的创建和管理。以下是一些关键知识点: 1. **Spring核心模块**(spring-core-...

    hessian-demo和hessian与spring整合demo.doc

    Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI(Remote Method Invocation,远程方法调用)的功能。采用的是二进制RPC(Remote Procedure Call Protocol,远程过程调用协议)协议,因为采用...

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

    二、Hessian与Spring整合 Hessian与Spring的整合可以帮助我们更好地管理和控制远程服务。Spring作为一个强大的企业级应用框架,可以提供依赖注入、事务管理等特性。在整合过程中,我们可以在Spring配置文件中声明...

    hessian+spring

    ### Hessian与Spring整合知识点详解 #### 一、Hessian简介 Hessian是一个轻量级的远程服务调用框架,其主要特点在于采用高效的二进制格式进行数据传输,这使得它非常适合处理大量的二进制数据。Hessian通过HTTP协议...

    Hessian(Spring集成的)的应用与研究

    Spring通过其AOP(面向切面编程)和IoC(控制反转)理念,为Hessian提供了便捷的整合方式。在Spring中,我们可以定义一个Service Bean,然后使用HessianExporter或者HessianProxyFactoryBean来暴露这个服务或者创建...

    spring+hessian+maven整合.zip

    在Spring整合中,我们可以使用HessianExporter来暴露服务,HessianProxyFactoryBean来创建服务客户端。 3. **Maven**:Maven的pom.xml文件定义了项目依赖、构建过程和插件设置。在这个项目中,它会管理Spring、...

    spring整合hessian进行远程通讯

    标题中的“spring整合hessian进行远程通讯”是指在Spring框架中使用Hessian库来实现远程过程调用(RPC)。这是一个常见的技术组合,用于构建分布式系统,使得应用组件之间可以跨网络进行高效通信。 Hessian是一种二...

    spring boot整合hessian的示例

    Spring Boot 整合 Hessian 的示例 在本文中,我们将通过实例代码来介绍如何将 Hessian 集成到 Spring Boot 应用程序中。Hessian 是一个基于 RPC(Remote Procedure Call,远程过程调用)的轻量级框架,它提供了一个...

    Spring集成Hessian案例

    本案例主要关注如何将Spring与Hessian进行集成,实现远程服务调用,从而提高系统的分布式能力。 首先,我们要理解Spring的核心概念。Spring通过依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-...

    Hessian RPC-RMI技术 整合Structs Spring Hibernate Ibatis

    本文主要讨论的是如何将Hessian RPC与RMI技术整合到Structs、Spring、Hibernate和Ibatis这四个关键的Java开发框架中,以构建一个高效、灵活的分布式应用程序。 1. **Hessian配置说明**: Hessian的配置通常涉及...

    Spring整合Hessian访问远程服务

    总的来说,Spring整合Hessian访问远程服务是Java开发中的常见实践,它利用Spring的灵活性和Hessian的高效性,简化了服务的发布和调用流程,是构建分布式系统时的一个有效工具。通过学习和掌握这一技术,开发者可以更...

    Spring整合Hessian(Maven Web工程)

    一个Spring整合Hessian的Demo,同时包含Hessian服务端与客户端。是一个Maven工程,IDE使用的Eclipse,运行前需要安装Eclipse的Maven插件。可以结合文章一起学习,地址是...

    struts2+ibatis+spring+Hessian 整合项目

    struts2+ibatis+spring+Hessian 整合项目 web项目整合,服务端用hessian协议远程调用服务端的方法,hessian是用spring代理整合,struts2+ibatis+spring的整合项目,用作学习和开发基础平台构建很有用处,工程导入...

    Springmvc+Hibernate+Hessian架包整合

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring MVC、Hibernate和Hessian这三大技术框架的整合可以实现这一目标。本篇将详细介绍这三个组件以及它们如何协同工作,帮助开发者构建高质量的分布式应用...

    Spring和Hessian的整合案例

    Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。 本例子使用spring 整合hessian使开发更加的容易。

    在 Spring Web Flow 项目中应用 Hessian 服务

    在Spring Web Flow项目中应用Hessian服务,是一个深入整合分布式服务和前端流程管理的重要实践。Spring Web Flow(SWF)是一个强大的MVC框架,用于构建具有复杂导航逻辑的Web应用程序,而Hessian则是一种轻量级的二...

Global site tag (gtag.js) - Google Analytics