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入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet...
Hessian入门案例源代码
这个hessian例子,包括一个service,一个client,大家只需要启动tomcat,并运行BasicClient这个类,即可
hessian入门实例,导入MyEclipse就可以直接运行,包含服务端和客户端如何请求,绝对分有所致,快速入门
使用servlet发布hessian不依赖有任何框架,最轻量级的demo,入门必备
Hessian服务端 入门程序
Hessian Binary Web Service Protocol远程接口调用入门Demo例子!
纯Hessian的入门例子教程,还有Hessian和Spring整合的例子教程。 代码上传之前都运行通过的
NULL 博文链接:https://zmx.iteye.com/blog/1846525
spring springmvc hessian rpc客户端及服务端示例demo,可直接运行,适合hessian入门的同学们学习,仅供有需要的同学们参考
Hessian远程调用框架学习一,第一个JAVA使用hessian的入门demo,简单实用易理解
hessian远程rpc的入门教程的源码,介绍如何使用hessian并测试成功,该项目的web项目名为空,如果需要自行命名web项目名,请修改测试类的url路劲
专业入门培训班ppt,内容涵盖Android开发知识点:Android开发环境的搭建(androidstudio+ gradle +jdk1.8) Android框架 Android 四大组件: Activity、Service、Content Provider、BroadcastReceiver UI及基本布局 ...
Harris角点检测(Harris-Corner-Detector )C++实现 (Opencv) 计算机视觉入门算法
word源码java fleet-spring-boot Spring Boot 教程,Spring ...Hessian 远程调用框架 :Spring Boot Forest Http 请求 :Spring Boot HTTP 访问控制 :Spring Boot GraphQL 构建 API :Spring Boot
入门 背景 需求 架构 用法 快速启动 服务提供者 服务消费者 依赖 必需依赖 缺省依赖 可选依赖 成熟度 功能成熟度 策略成熟度 配置 Xml配置 属性配置 注解配置 API配置 示例 启动时检查 集群容错 负载均衡 线程模型 ...
轻量级WebService,打包了轻量级WebService hessian的一个简单demo,还有Xfire的一个简单demo,还有一些PPT文档,相对来说,对于没有入门的童鞋们来说是个不错的资源,免费共享给大家,互相共勉(我也是菜鸟)。
帮别人弄的一个框架Demo、基于maven构建、采用springMvc+springJdbc,特点是web层和service层分离,采用hessian实现远程交互,这样web和service可以分开部署,中间用代理服务器转发,实现一台web多个service节点提供...
有关Dubbo服务框架的简单使用,可以参考我的其他两篇文章(《基于Dubbo的Hessian协议实现远程调用》,《Dubbo实现RPC调用使用入门》,后面参考链接中已给出链接),这里主要围绕Dubbo分布式服务相关配置的使用来说明...