Hessian,二进制Web服务协议。Hessian使得Web service的使用不需要重量级的框架,也不需要学习另一个soup协议。由于它是一个基于二进制协议的框架,所以它非常适合发送二进制数据而不需要扩展其它的协议。
当然了,公司框架已经集成了Hessian,由于不是我集成的,所以,自己在家学习一下。
我也是从网上搜罗了很多的资料以及拜读了许多前辈的博客才有了点眉目,今天写这一篇,主要是出于学习Hessian做笔记之用。在这篇博文里,主要介绍了Hessian的基本用法以及与Spring的集成用法:
一、Hessian的基本用法:
Hessian的官网上是这样介绍建立Hessian服务的步骤的:
1)创建一个Java接口作为一个公共的API;
2)使用HessianProxyFactory创建一个客户端;
3)创建Service的实现类;
4)配置Service在你的Servlet引擎中。
通过上述步骤,我们可以看到,Hessian分为服务器端和客户端,Web Service嘛,必须的!OK,按照这个思路,我们把上述步骤分为服务器端和客户端来创建一个Hessian实例。
服务器代码
首先,建立一个公共的接口IGreeting:
public interface IGreeting {
public String sayHello();
// public Car searchCarInfo(Car car);
}
其次,通过继承HessianServlet创建IGreeting的实现类:
public class GreetingService extends HessianServlet implements IGreeting {
private static final long serialVersionUID = 1L;
private String greeting = "Hello,Hessian!";
public String getGreeting() {
return greeting;
}
public String sayHello() {
return greeting;
}
}
这段代码也没有什么好说的,现在我们来把这个GreetingService配置到web.xml中:
<servlet>
<servlet-name>Greeting</servlet-name>
<servlet-class>org.hession.demo.impl.GreetingService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Greeting</servlet-name>
<url-pattern>/Greeting</url-pattern>
</servlet-mapping>
OK,上述的四个Hessian创建步骤,我们现在只差通过HessianProxyFactory这个类创建一个客户端了。
客户端代码
String url = "http://localhost:8080/HessianDemo/Greeting";
HessianProxyFactory factory = new HessianProxyFactory();
IGreeting greeting = (IGreeting) factory.create(IGreeting.class,url);
System.out.println(greeting.sayHello());
把项目布署到Tomcat,启动Tomcat,运行就可看到我想到的结果了。
二、Hessian与Spring的集成:
相关的jar包我就不再罗列了,有兴趣的朋友,可以下载附件源码。
服务器端代码
Hessian是通过Spring的HTTP请求处理器导出指定的服务bean为一个Hessian服务,通过Hessian代理访问。这个导出Hessian服务的导出器类为:org.springframework.remoting.caucho.HessianServiceExporter
服务器端的接口和实现代码我就不再罗列了,现列出remoting-servlet.xml的服务配置代码:
<!-- 使用HessianServiceExporter 将普通bean导出成Hessian服务-->
<bean name="/userservice"
class="org.springframework.remoting.caucho.HessianServiceExporter">
<!-- 需要导出的目标bean-->
<property name="service">
<ref bean="userservicetarget"/>
</property>
<!-- Hessian服务的接口-->
<property name="serviceInterface">
<value>org.hession.demo.IUserService</value>
</property>
</bean>
可以看到,HessianServiceExporter通过指定service和serviceInterface属性,从而达到将普通类导出为Web Service的目的。
service导出的目标bean为在applicationContext.xml中配置的实现类:org.hession.demo.impl.UserService,在此不再说明喽。
服务器端Spring的web.xml配置可参见源代码。
客户端代码
客户端的代码也是通过Spring配置来完成的。
首先呢,Client.properties里面配置了服务器端的URL信息,现罗列如下:
# Properties file with server URL settings for remote access.
serverName=localhost
httpPort=8080
serverPath=HessianDemo
contextPath=remoting/userservice
在第一点中,创建Hessian的客户端通过指定服务的URL和指定的接口,通过HessianProxyFactory创建指定的服务类,在此贴出Spring客户端applicationContext_client.xml的代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="Client.properties"></property>
</bean>
<bean id="proxyuserservice" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl">
<value>http://${serverName}:${httpPort}/${serverPath}/${contextPath}</value>
</property>
<property name="serviceInterface">
<value>org.hession.demo.IUserService</value>
</property>
</bean>
<bean id="hessinaclient" class="org.hession.demo.test.HessianClient">
<property name="userSerivce">
<ref local="proxyuserservice"/>
</property>
</bean>
</beans>
HessianProxyFactoryBean通过指定serviceUrl和serviceInterface属性,创建一个远程服务到本地,HessianClient这个类呢,就是客户端代码了。
现看看客户端HessianTest测试代码如下所示:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext_client.xml");
HessianClient hessian = (HessianClient) ctx.getBean("hessinaclient");
System.out.println("hessinaclient:" + hessian.getUsernames());
OK,Hessian的学习到此为止,搞定喽,收工!
分享到:
相关推荐
这个“Hessian入门小例子”是帮助开发者理解如何在实际项目中应用Hessian的一种方式。下面我们将深入探讨Hessian协议、它的特点、以及如何在Java环境中设置和使用Hessian服务和客户端。 首先,让我们了解Hessian的...
这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet...
在“Hessian入门案例源代码”中,我们可以通过分析HessianDemo这个项目来学习如何使用Hessian。源代码通常包括服务器端和客户端两部分,它们展示了如何定义服务接口、实现服务、发布服务以及如何调用这些服务。 1. ...
这个"**hessian入门实例**"旨在帮助初学者快速理解并应用Hessian技术,通过导入到MyEclipse这样的集成开发环境中,可以直接运行示例代码,从而直观地了解Hessian的工作原理。 首先,我们要理解什么是RPC。RPC允许一...
Hessian是一种二进制Web服务协议,它提供了一种轻量级、高效的远程方法调用(RPC)方式。Hessian的出现旨在解决XML-RPC在数据传输时的效率问题,因为XML格式的数据在网络上传输时体积较大,解析速度较慢。下面我们将...
本篇文章将带你入门Hessian,了解其基本概念、工作原理以及如何在实际项目中应用。 首先,我们来理解一下Hessian的核心概念。Hessian是基于HTTP的,它使用一种高效的二进制格式来序列化和反序列化Java对象,这样就...
本教程将通过一个入门Demo来介绍如何使用Hessian进行远程接口调用。 首先,让我们理解Hessian的优势。与XML-RPC相比,Hessian使用二进制编码,因此在网络传输时占用的带宽更少,解析速度更快。此外,Hessian支持...
一、Hessian入门实例 Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如`HelloService`,包含一个或多个方法,这些方法将被远程调用。然后,我们需要实现这...
本教程将引导你入门Hessian,通过一个简单的JAVA demo来理解其工作原理和应用。 首先,我们需要了解Hessian的基本概念。Hessian是由Caucho Technology开发的一种二进制Web服务协议,它提供了对Java对象序列化和反...
《Hession经典入门实例解析》 Hession是一种高效的RPC(Remote Procedure Call)协议,它能够将Java、.NET、Python等语言之间的方法调用转换为HTTP请求,实现跨语言服务调用。本篇文章将深入探讨Hession的基础知识...
在本教程中,我们将介绍如何创建一个基本的Hessian服务器,并将其集成到Spring框架中。 ### 1. 创建Hession服务器端 #### 1.1 定义服务接口 首先,我们需要定义一个服务接口,例如`Hello`,它包含了客户端可以调用...
- Resin 支持远程过程调用(Remote Procedure Call, RPC),包括 Hessian 等协议,方便不同应用间的通信。 #### 二十一、消息传递 - **HMTP** - HMTP 是 Resin 提供的一个消息传递协议,用于在分布式环境中发送...
4. **协议(Protocol)**:Dubbo 支持多种通信协议,如 dubbo、http、hessian 等,用于定义服务的调用方式。 5. **接口与实现(Interface & Implementation)**:服务的定义通常以 Java 接口的形式存在,服务提供者...
特征检测则涉及边缘检测(如Canny、Sobel、Prewitt算子)、角点检测(如Harris、Shi-Tomasi、Hessian矩阵检测)以及关键点检测(如SIFT、SURF、ORB),这些技术在目标识别、追踪等领域有广泛应用。 OpenCV3在机器...
9. **结构化矩阵的导数**:针对特定类型的矩阵,如对称矩阵、Hessian 矩阵等,提供了导数的计算方法。 #### 四、逆矩阵 1. **基本概念**:这部分介绍了逆矩阵的基本概念和性质。 2. **精确关系**:详细讨论了逆矩阵...
### Dubbo入门教程知识点梳理 #### 一、电商系统架构演变 ##### 1.1 单一应用架构(ORM) **定义与特点:** - **单一应用架构**是指早期网站流量较小时,为了减少部署节点和成本,所有的功能(如下单、支付等)都被...
【标题】"dubbo+zookeeper入门实例"是一个关于使用Dubbo框架与Zookeeper结合实现服务发现和服务调用的基础教程。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,而Zookeeper则是一个分布式服务协调...
【Android网络通信】中,Volley、XUtils、fjFrameforandroid、Hessian和OkHttp等库提供了网络请求的便利,它们各有特点,适应不同的网络需求。 【其他】部分提到了NDK,它允许开发者使用C/C++编写性能关键部分的...
《MATLAB从入门到精通》是一本全面介绍MATLAB编程技术的教程,旨在帮助初学者快速掌握MATLAB的基础知识,并逐步提升至高级应用水平。MATLAB(Matrix Laboratory)是一种强大的数学计算软件,广泛应用于工程计算、...