一、简介
Hessian是一个序列化协议, 他的优点在于比Java原生的对象序列化/反序列化速度更快, 序列化出来以后的数据更小。
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。
Hessian是一个二进制的web服务协议,可使用Hessian发送二进制数据,同时又具有防火墙穿透能力。
Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的 WebService。
Hessian主要作面向对象的消息通信。
Hessian服务通过接口暴露。
下面以hessian-3.0.20版本为例演示如何将Hessian整合到Spring中。
二、配置详解
1、在web.xml中的配置
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/applicationContext.xml, /WEB-INF/Hessian-servlet.xml </param-value> </context-param> <servlet> <servlet-name>Hessian</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Hessian</servlet-name> <url-pattern>/hessian/*</url-pattern> </servlet-mapping>
1)Hessian要求远程服务通过Servlet暴露出来,所以我们使用Spring的DispatcherServlet来暴露我们的服务。
2)我们必须在WEB-INF目录下创建一个文件名格式为 [Servlet Name]-servlet.xml 的配置文件,由于我们设定servlet-name为Hessian,所以我们在这里创建一个名为Hessian-servlet.xml的文件。
2、Hessian-servlet.xml文件的配置
<!-- 业务类 --> <bean id="hessianService" class="com.cjm.webservice.hessian.HessianServiceImpl"/> <!-- 远程服务 --> <bean name="/hessianService" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="hessianService"/> <property name="serviceInterface"> <value> com.cjm.webservice.hessian.HessianService </value> </property> </bean>
1)实际业务类是通过Spring的HessianServiceExporter类来暴露给客户端的。
2)service:指定服务对应的业务类。
3)serviceInterface:指定业务类实现哪个接口。Spring推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。
4)Hessian的远程服务名为/hessianService。笔者使用的web服务器是Tomcat-5.5.23,端口是8888,web应用名为spring2,则远程服务的URL为:http://localhost:8888/spring2/hessian/hessianService。
3、业务类源代码
//接口类: public interface HessianService { public String sayHello(String username); public HessianModel getHessianModel(String username, String password); } //实现类: public class HessianServiceImpl implements HessianService { public String sayHello(String username){ return "Hello " + username; } public HessianModel getHessianModel(String username, String password) { return new HessianModel(username, password); } } //领域模型类: public class HessianModel implements Serializable{ private String username; private String password; public HessianModel(String username, String password){ this.username = username; this.password = password; } …… }
4、客户端调用服务范例
1)在Jsp页面中调用服务
String url = "http://localhost:8888/spring2/hessian/hessianService"; HessianProxyFactory factory = new HessianProxyFactory(); HessianService hessianServer = (HessianService)factory.create(HessianService.class, url); String ret = hessianServer.sayHello("Raymond.chen"); out.print(ret); HessianModel model = hessianServer.getHessianModel("uid", "pwd"); out.print("username: " + model.getUsername() + "<br>");
A)结果显示:Hello Raymond.chen
B)客户端程序必须引用hessian-3.0.20.jar文件和远程服务对应的接口类。
C)当调用的远程服务方法返回一个自定义类时,该自定义类必须实现Serializable接口。
2)在Spring环境中调用服务
<bean id="testHessianService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> <property name="serviceUrl" value="http://localhost:8888/spring2/hessian/hessianService"/> <property name="serviceInterface" value="com.cjm.webservice.hessian.HessianService"/> </bean> <!- Struts2中调用服务 --> <bean id="orgAction" class="com.cjm.web.action.OrganizationAction" parent="baseAction"> <property name="organizationService" ref="organizationService"/> <property name="testHessianService" ref="testHessianService"/> </bean>
OrganizationAction.java部分源代码:
private HessianService testHessianService; HessianModel model = testHessianService.getHessianModel("uid", "pwd"); System.out.println("username: " + model.getUsername());
A)使用HessianProxyFactoryBean来连接服务。
B)serviceUrl:远程服务的URL。
C)serviceInterface:服务对应的接口类。
相关推荐
在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Hessian则是一种高效的RPC(远程过程调用)协议,它允许服务提供者和消费者之间进行二进制远程方法调用。本案例主要关注如何将Spring与Hessian进行...
在"基于spring+hessian框架的webservice实例"中,我们将看到如何结合Spring和Hessian来创建和消费Web服务。首先,我们需要创建一个服务接口和服务实现。这个接口定义了可供远程调用的方法,而实现则提供了具体的功能...
在Flex-Spring集成中,Spring作为服务提供者,为Flex客户端提供业务逻辑和数据。 Hessian是一种轻量级的二进制RPC协议,由Caucho公司开发。相比HTTP,Hessian减少了网络传输的数据量,提高了远程调用的性能。...
在Spring框架中集成Hessian,我们需要进行以下步骤: 1. **创建服务接口和服务实现**: 首先,你需要定义一个服务接口,然后实现这个接口。例如,我们有一个`HelloHessianService`接口,包含一个`sayHello`方法。 `...
要在Spring Web Flow项目中集成Hessian服务,我们需要以下步骤: 1. **配置Hessian服务**:在服务器端,我们需要创建一个实现了所需接口的业务服务类,并在Spring配置文件中声明它为Hessian服务,使用`<bean>`标签...
总之,Spring集成Hessian插件并改用自动注入可以极大简化服务的管理和调用。通过合理的配置和注解,我们可以实现服务的自动发现和依赖注入,提升代码的灵活性和可维护性。同时,理解并熟练掌握这一技术对于提升开发...
下面将详细讲解Hessian与Spring集成的关键知识点。 首先,理解Hessian是什么至关重要。Hessian是一个二进制的Web服务协议,由Caucho公司开发。它提供了轻量级、高效的RPC(Remote Procedure Call)框架,使得Java...
Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...
在Spring框架中,可以使用HessianServlet和HessianProxyFactoryBean来分别实现服务端和客户端的配置。 服务端配置通常会涉及以下步骤: 1. 创建一个服务接口和其实现类。 2. 在Spring配置文件中定义该服务bean,并...
在本文中,我们将通过实例代码来介绍如何将 Hessian 集成到 Spring Boot 应用程序中。Hessian 是一个基于 RPC(Remote Procedure Call,远程过程调用)的轻量级框架,它提供了一个高效、灵活和可扩展的方式来实现...
标题中的“spring整合hessian进行远程通讯”是指在Spring框架中使用Hessian库来实现远程过程调用(RPC)。这是一个常见的技术组合,用于构建分布式系统,使得应用组件之间可以跨网络进行高效通信。 Hessian是一种二...
在本文中,我们将深入探讨如何使用Spring4框架与Hessian4库进行远程服务调用,即所谓的外部接口调用。这种技术允许不同应用程序之间通过网络高效地交换数据和执行服务,尤其是在分布式系统中非常常见。 首先,让...
二、Spring集成Hessian Spring通过其AOP(面向切面编程)和IoC(控制反转)理念,为Hessian提供了便捷的整合方式。在Spring中,我们可以定义一个Service Bean,然后使用HessianExporter或者HessianProxyFactoryBean...
2. 在Spring配置文件中声明Hessian服务bean,并指定其接口和实现。 3. 使用`HessianProxyFactoryBean`或`HessianServiceExporter`来暴露Hessian服务。 4. 在客户端,通过Spring的`HessianClientInterceptor`或者直接...
在Java开发中,Hessian和Spring是两个非常重要的框架,它们各自在不同的领域发挥着关键作用。Hessian是一种轻量级的远程方法调用(RPC)协议,它基于HTTP协议,能够有效地传输二进制数据,提高网络通信效率。而...