原本系统之间通信采用Restful Web Service,但其中没有考虑安全性问题,因此决定使用稍微复杂点的二进制协议,Hessian服务。
Hessian是一个轻量级的Remoting On HTTP工具,使用简单的方法提供了RMI的功能,相比Web Service,Hessian更简单,快捷,采用的是二进制RPC协议。
Hessian处理过程的简要流程:
客户端 - 序列化写到输出流 - 远程方法(服务器端) - 序列化写到输出流 - 客户端读取输入流 - 输出结果
Hessian通过Servlet提供远程服务,需要将匹配某个模式的请求映射到Hessian服务。如果集成到Spring中,可以通过DispatcherServlet完成此功能,DispatcherServlet可以将匹配模式的请求转发到Hessian服务。
<servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
配置web.xml,将任意请求都映射到该Dispatcher中。
首先,使用SimpleUrlHandlerMapping,制定对应的service URL,和对应的服务接口,服务实现:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="order" value="100"/> <property name="urlMap"> <map> <entry key=“/remote/xxxService" value-ref="diabloService"/> </map> </property> </bean> <bean id="diabloService" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="diabloTaskService"/> <property name="serviceInterface" value="com.xxxx.IXXXTaskService"/> </bean> <bean id="diabloTaskService" class="com.xxxx.framework.hessian.XXXTaskServiceImpl"/>
在客户端和服务端之间,需要共享服务接口对象以及接口中使用的对象,注意自定义的对象由于要进行二进制传输,必须要实现java.io.Serializable接口。比较好的方式使用一个公用的maven私服,这样就可以避免接口改动造成的频繁jar包传输。
在客户端中,需要知道Hessian服务对应的Url,这个是通过上面所说的service url以及服务器地址,端口得到的。
客户端方面的方法也比较简单,通过Url得到对应的服务代理,来进行下一步操作:
HessianProxyFactory factory = new HessianProxyFactory(); try { String url = "http://127.0.0.1:8888/remote/xxxService"; IXXXTaskService xxxTaskService = (IXXXTaskService) factory.create(IXXXTaskService.class, url); XXXResultStatus status = xxxTaskService.submitTask("211", contentBuilder.toString()); System.out.println(status); } catch (MalformedURLException e) { e.printStackTrace(); }
如果服务已经启动,那么该服务肯定执行成功。
在Spring中调用Hessian服务也非常简单和容易,只需要在任务中新建一个HessianProxyFactoryBean,并指定对应的服务url和服务接口即可。
<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>
Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library,基于 Binary-RPC 协议实现,需通过 Hessian 本身提供的 API 来发起请求,Hessian 通过其自定义的串行化机制将请求信息进行序列化,产生二进制流,Hessian 基于 Http 协议进行传输,响应端根据 Hessian 提供的 API 来接收请求,Hessian 根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了,处理完毕后直接返回, hessian 将结果对象进行序列化,传输至调用端。
相关推荐
这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet...
这个“Hessian入门小例子”是帮助开发者理解如何在实际项目中应用Hessian的一种方式。下面我们将深入探讨Hessian协议、它的特点、以及如何在Java环境中设置和使用Hessian服务和客户端。 首先,让我们了解Hessian的...
一、Hessian入门实例 Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如`HelloService`,包含一个或多个方法,这些方法将被远程调用。然后,我们需要实现这...
在“Hessian入门案例源代码”中,我们可以通过分析HessianDemo这个项目来学习如何使用Hessian。源代码通常包括服务器端和客户端两部分,它们展示了如何定义服务接口、实现服务、发布服务以及如何调用这些服务。 1. ...
**Hessian入门介绍** 在IT领域,Hessian是一种二进制Web服务协议,它由Caucho Technology开发,主要用于提供轻量级、高效的远程过程调用(RPC)机制。Hessian的目标是简化分布式系统间的通信,减少网络传输的数据量...
这个"**hessian入门实例**"旨在帮助初学者快速理解并应用Hessian技术,通过导入到MyEclipse这样的集成开发环境中,可以直接运行示例代码,从而直观地了解Hessian的工作原理。 首先,我们要理解什么是RPC。RPC允许一...
本教程将通过一个入门Demo来介绍如何使用Hessian进行远程接口调用。 首先,让我们理解Hessian的优势。与XML-RPC相比,Hessian使用二进制编码,因此在网络传输时占用的带宽更少,解析速度更快。此外,Hessian支持...
Hessian是一种二进制Web服务协议,它提供了一种轻量级、高效的远程方法调用(RPC)方式。Hessian的出现旨在解决XML-RPC在数据传输时的效率问题,因为XML格式的数据在网络上传输时体积较大,解析速度较慢。下面我们将...
**Hessian:深入理解与应用** Hessian是一种二进制Web服务协议,它由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation,RMI)服务。Hessian的目标是简化分布式系统...
Hessian的设计目标是为了提供高效、简单的远程调用方式,使得客户端能够像调用本地方法一样调用远程服务。 **独立使用Hessian** 在不依赖任何框架的情况下,使用Hessian的步骤如下: 1. **添加依赖**:首先,...
本篇文章将带你入门Hessian,了解其基本概念、工作原理以及如何在实际项目中应用。 首先,我们来理解一下Hessian的核心概念。Hessian是基于HTTP的,它使用一种高效的二进制格式来序列化和反序列化Java对象,这样就...
Hessian是一种高效的二进制序列化协议,常用于实现轻量级的远程过程调用(RPC)。这个案例涉及到了Hessian在Java和Python之间的跨语言通信。以下是对Hessian技术及其应用的详细解释: 1. **Hessian简介**:Hessian...
这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...
Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation, RMI)机制。它结合了HTTP协议的可扩展性和Java序列化机制的易用性,使得在...
在图像处理领域,多尺度Hessian滤波器是一种高级的图像增强技术,它主要用于检测图像中的线性结构,特别是对于微弱或者噪声较大的图像特征有很好的识别能力。这个技术是基于数学形态学的Hessian矩阵理论,由V.S. ...
《Hessian应用详解》 Hessian,一种轻量级的二进制协议,因其高效、简单的特点,在分布式服务中被广泛应用。它允许开发者在HTTP上透明地调用远程方法,就像是本地方法调用一样,极大地提高了开发效率和系统性能。...
在IT领域,尤其是在医学图像分析中,Hessian矩阵是一个重要的数学工具,用于图像特征检测,特别是在血管分割的应用中。本文将深入探讨标题和描述中提到的"基于Hessian矩阵增强的心血管分割"这一主题。 Hessian矩阵...
- 在实际开发中,我们可能会需要编写一些辅助工具类来处理Hessian的相关操作,例如Hessian2Input和Hessian2Output,它们用于读写Hessian序列化的二进制流。 6. **安全性与优化**: - 虽然Hessian协议效率高,但其...
在IT行业中,Hessian是一种基于二进制协议的RPC(远程过程调用)框架,它使得客户端和服务端之间能够高效地进行数据交换。HessianServer指的是实现Hessian协议的服务端程序,通常用于构建分布式系统,使得不同的应用...
在Spring框架中,Hessian是一种轻量级的远程方法调用(RPC)协议,它能够实现Java对象到字节流的序列化,从而使得服务端的对象可以在客户端直接调用,仿佛对象就在本地一样。Hessian提供了高效的二进制RPC协议,使得...