一、首先先说Hessian是什么?
Hessian:hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用了二进制协议,所以它很适合于发送二进制数据,Hessian主要作面向对象的消息通信。Hessian的初衷就是支持动态类型,格式紧凑,跨语言Hessian是使用自己的序列化机制实现的编组和反编组,其支持的数据类型是有限制的,不支持复杂的对象,可以穿透防火墙,在这里不得不说一下RMI:RMI是一组用户开发分布式应用程序的API。他使用的是java序列化机制实现调用及返回值的编组于反编组。它使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。他可以被看做是RPC的Java版本,因为传统的RPC并不能很好的应用于分布式对象系统。而Java RMI则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。他也有它的缺点,他只能通过RMI协议来进行访问无法通过HTTP协议访问,无法穿透防火墙。
还有一种远程调用方法就是HttpInvoker:他也是将参数和返回值通过Java的序列化机制进行编组和反编组,它具有RMI的支持所有可序列化对象的优点。试使用Http协议传输二进制流的,同时又具有Hessian、Burlap(传输xml文本)的优点。
二、写一个简单的hessian通信所需要知道写哪些内容?
Hessian:写一个Hessian需要注意的问题:
1、JAVA服务器端必须具备以下几点:
包含Hessian的jar包
设计一个接口,用来给客户端调用
实现该接口的动能
配置web.xml,配置相应的servlet
对象必须实现Serializable接口
对于复杂对象可以使用Map的方法传递
2、客户端必须具备以下几点:
java客户端包含Hessian.jar包
具有和服务器端结构一样的接口和实体类。包括命名空间都最好一样。利用HessianProxyFactory调用远程接口
三、简单hessian实例:
1、在服务端的接口:
public interface IHello {
String sayHello();
}
2、在服务端的实现类:
public class IHelloImpl extends HessianServlet implements IHello {
@Override
public String sayHello() {
// TODO Auto-generated method stub
return "Hello,I from HessianService";
}
}
3、在客户端的类:
public class ClientTest {
public static String url = "http://127.0.0.1:8080/HessianService/Hello";
public static void main(String[] args){
HessianProxyFactory factory = new HessianProxyFactory();
try {
IHello iHello = (IHello) factory.create(IHello.class, url);
System.out.println(iHello.sayHello());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3、先将服务器端的类link到客户端,或者是将服务器端打包放到客户端,
4、在web.xml中进行配置:
服务器端: <servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.kcpt.hessian.service.IHelloImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.kcpt.hessian.service.IHello</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
执行成功:输出Hello,I from HessianService,这是简单的hessian实现方式,看起来比较简单
- 浏览: 579787 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (253)
- java (84)
- python (22)
- 设计模式 (12)
- 数据结构和算法 (7)
- ibatis (1)
- 数据挖掘 (2)
- 集体智慧读书笔记 (1)
- ubuntu (4)
- lucene (11)
- 算法 第4版 (11)
- apache mina (16)
- memcached (1)
- android (9)
- netty (6)
- mongodb (2)
- maven (2)
- openfire (2)
- 服务端 (21)
- 产品 (0)
- apache (1)
- 选择 (2)
- 构架WEB高性能站点 (7)
- redis (8)
- 诗词歌赋 (3)
- 源代码阅读 (5)
- 前端 (1)
- javascript (3)
- guice (1)
- 分布式 (5)
- 总结-2014 (4)
- jvm (1)
最新评论
-
liu_jiaqiang:
写的挺好
maven多项目管理 -
H972900846:
我想知道哪里整的,如果是自己写的,那有点牛呀如果是抄的请说明出 ...
SSL身份认证原理 -
春天好:
博主写的很好,赞一个,多谢分享 *(^-^*)分享一个免费好用 ...
定向网站爬虫---初级例子 -
fenglingabc:
经过测试,parameterType="java.u ...
mybatis获取主键和存储过程返回值 -
jyghqpkl:
[u][/u] ...
Cookie的secure 属性
发表评论
-
protobuf-dt插件
2015-03-24 13:16 1419protobuf-dt: 安装前先安装xtext 可 ... -
java循环标签
2015-03-20 16:13 609今天看 源码的时候 看到 一个小语法 参考: ... -
java程序性能优化 --阅读
2014-10-14 17:56 708闲着,真实无聊; 发现一本好书《java程序性能优 ... -
jetty invalid entry CRC问题
2014-08-04 11:42 16111: http://stackoverflow.com/qu ... -
guice注入
2014-05-24 12:13 9447Google Guice3.0: http://code. ... -
eclipse快捷键
2014-05-21 16:01 5781: clrl+alt+r : 最常用,快速定位到文件 2 ... -
java clone
2014-05-16 17:04 526转:http://www.blogjava.net/ora ... -
ThreadLocal
2014-05-13 18:39 772简单介绍一下ThreadLocal的原理:1.Thread ... -
冒泡和快速排序java
2014-04-19 18:01 7581: 冒泡最简单一种: /** * 算法效率o ... -
java生产者和消费者模型三种实现
2014-04-19 17:51 13661: 生产者和消费者的问题,生产者生产产品到缓冲区,消费者 ... -
单例模式
2014-03-14 16:06 749今天看到群里,关于单例模式的多线程下的安全问题: 1:最 ... -
freemarker的使用
2014-02-28 16:42 8421:freemarker eclipse插件安装方法:ht ... -
java 引用类型和内存泄露
2013-11-21 17:48 585http://blog.csdn.net/luoshenfu ... -
java泛型
2013-11-07 13:52 434Class<T>在实例化的时候,T要替换成具体 ... -
filter执行顺序
2013-10-12 11:16 1124多个筛选器的运行顺序取决于下列规则: 将 filt ... -
spring rmi远程调用
2013-09-09 11:48 11751:以前用jmi发布服务,实现分布式的一种方式,远程调用, ... -
spring mvc返回204状态码
2013-07-24 09:27 39261:204是没内容 不跳转的 代表请求成功的意思 ... -
editplus去掉多余空行
2013-07-19 21:05 7391: ^[ \t]*\n 用正则表达式替换 -
spring3 aop 使用详细
2013-06-06 11:10 01:目标:拦截所有的@Controller中的方法 ... -
apche commons pool
2013-05-21 16:00 788http://www.ibm.com/developerwo ...
相关推荐
Java开发过程中,Hession是一个非常重要的工具,它主要用于服务间通信,尤其是跨语言服务调用。Hession基于HTTP协议,采用二进制序列化方式,能够高效地进行远程方法调用(RPC)。这个RAR压缩包“java开发常用jar包...
《Hession:经典入门实例详解》 Hession是一款开源的RPC框架,由Caucho公司开发,主要用于Java和其它语言之间的高效、简单的服务调用。它以二进制序列化的方式,提供了比XML-RPC更快的数据传输效率。在这个经典入门...
Hession 是一个高性能的RPC(Remote Procedure Call)框架,它主要设计用于Java应用程序之间的通信,但也能与其他语言兼容。Hession 提供了一种简洁、高效的方式来进行二进制序列化,使得远程调用如同本地方法调用...
总结,"dubbo_rpc_hession_rmi"这个主题涵盖了Dubbo作为RPC框架的核心概念,Hessian作为RPC协议的实现,以及RPC基础理论。通过学习这些内容,开发者可以更好地理解和应用分布式服务框架,提高系统的可扩展性和可维护...
Hession 是一种高效的RPC(Remote Procedure Call)协议,由阿里巴巴开源,主要用于Java和Java之间的通信。它以二进制格式序列化对象,使得网络传输效率更高,尤其在处理大量数据时,性能表现优越。Hession 提供了...
在“Hession调用”中,核心概念包括服务端(Server)和客户端(Client)。服务端提供一系列接口或方法,通过Hession协议暴露这些接口供客户端调用。客户端则通过HTTP请求调用这些服务,就像调用本地方法一样简单。 ...
Hession与SpringMVC整合的例子程序,HseServer.zip为服务器端,HseClient.zip为客户端 pom.xml为引用的jar,可以删除一些无用的引用。版本为JDK8,Spring4.3.4,hessian4.0.38
hession服务端
很抱歉,根据您提供的信息,"Hession简介共3页.pdf.zip"似乎是一个关于Hession框架的简短介绍,但实际的压缩包内容列表中提到的是"赚钱项目",这与Hession的主题不相符。Hession是一个开源的RPC(Remote Procedure ...
【标题】:Hession与Web服务的区别 在IT领域中,Hession和Web服务(主要指SOAP Web服务)是两种不同的远程调用技术,用于实现应用程序间的通信。它们各自具有独特的特性和适用场景,理解两者之间的差异对于选择合适...
标题中的“Hession与Webservice的区别”提示我们讨论的主题是两种不同的服务通信协议:Hession和Web服务(通常指的是SOAP或RESTful Web服务)。这两者都是用于不同应用程序之间交换数据的方式,但它们在实现方式、...
【Hession入门及注入Spring】 Hessian是一种轻量级的RPC(Remote Procedure Call)协议,它基于HTTP协议,主要用于提供二进制序列化的远程方法调用。Hessian使得Java对象能够在网络间高效地进行传输,简化了分布式...
【标题】:“Web服务学习之Hession” 在Web服务领域,Hession是一个高效、轻量级的二进制RPC框架,主要用于Java与Java之间或Java与其他语言之间的远程调用。它能够快速地序列化和反序列化Java对象,使得网络通信...
Hession 是一个高效的RPC(Remote Procedure Call)框架,它由淘宝开发并开源,主要用于Java与Java之间、Java与其他语言之间的高性能远程调用。Hession利用HTTP作为传输协议,以序列化的方式处理各种类型的数据,...
Hession是一种轻量级的RPC(远程过程调用)框架,它主要用于Java应用程序之间进行高效、快速的数据交换。Hession基于HTTP协议,采用二进制序列化的方式,使得跨网络的通信性能得到显著提升,尤其适合于服务端之间的...
标题 "springmvc+velocity+hession+ibatis" 涉及到的是一个使用Spring MVC、Velocity、Hessian和iBatis构建的Web应用程序。这些技术是Java开发中的关键组件,让我们逐一深入理解它们: 1. **Spring MVC**:Spring ...
在IT行业中,Hession是一种高效的RPC(Remote Procedure Call)协议,它主要用于Java应用程序之间的通信,尤其是在分布式系统中。Hession提供了序列化和反序列化的功能,使得Java对象能够以二进制流的形式在网络间...
《Hessian远程调用技术详解》 在分布式系统中,远程调用是常见的通信方式,它使得服务可以跨越网络边界,实现组件之间的交互。Hessian,由Caucho公司开发,是一种高效的二进制RPC(Remote Procedure Call)协议,常...
解压提供的"webservice(rest_cxf_hession)"压缩包后,你将看到一个结构化的Maven项目,包含示例代码和配置文件,可以直接运行和测试这三种Web服务技术的实现。 总结来说,REST、Hessian和CXF是实现Web服务的三种...