轻量级远程调用框架-Hessian学习笔记-Demo实现
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据
.
这两天有空把hessian接口也学习一下。由于学习是为了以后测试工作而进行的,所以对于hessian和soap机制孰优孰劣就没有深入的研究,这些问题还是留给我们架构师来研究吧。根据网上的文献:Hessian是采用二进制流进行通讯的,所以我想性能应该会好一些,既然通过二进制流传递,是不是对复杂对象的传递有问题呢,我想可能会有些难度,毕竟传递过程中没有象soap这样保留了对象的结构的。这个问题有待以后考证。今天我想把我第一次学习hessian的经历分享一下。
和ICE,WebService一样,既然作为服务类那么必须有文档公布它的接口形式,客户端用户在通过这个文档来生成代理类。ICE是通过.Ice文件,WebService是通过wsdl,但是hessian没有这个类型的文档,hessian的代理类是直接通过factrory去生成的。所以在做hessian客户端代码之前,需要拿到接口文件interface。下面我们通过一个完整的例子看看hessian服务器端代码和客户端代码如何实现。
服务器端代码和配置:
1. 去http://hessian.caucho.com/#Java 下载hessian
jar包。
2. 新建服务器端工程(web工程:hessian),新增接口声明文件new->interface。代码如下:
package com.ems.hessian.service;public interface IPrinter {
|
3. 新建服务器类实现代码,new->class,代码如下
package com.ems.hessian.service.impl;import com.ems.hessian.service.IPrinter;public class PrinterService implements IPrinter {
@Override
|
4. 修改服务器端web.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
|
上述代码实现如下功能:
* 指定接口的url
* 指定API使用的inteface文件
* 指定服务器类实现的代码
5. 导出工程为hessian.war,部署到tomcat5的webapps目录下。
6. 将hessian jar包拷贝到lib目录下。
客户端代码:
1. 新建客户端工程,新增测试类,代码如下
package com.ems.client;import com.caucho.hessian.client.HessianProxyFactory;
public class TestClient {public static void main(String[] args)throws Exception{String url = "http://127.0.0.1:8080/hessianDemo/service";
HessianProxyFactory factory = new HessianProxyFactory();factory.setOverloadEnabled(true); //启用方法重载识别// 客户端需实现Basic接口IPrinter printer = (IPrinter) factory.create(IPrinter.class, url);//System.out.println("Hessian: " + printer.printstr());
}} |
运行客户端代码:可以看见:
Hessian: hello hessian demo.
|
。初学者需要源代码的,请留言。
如果读者有兴趣使用comview去捕捉实际传递的内容,发现根本看不懂传递的内容,因为是以二进制流进行传递的。
轻量级远程调用框架-Hessian学习笔记-Demo实现的更多相关文章
- 基于二进制RPC协议法的轻量级远程调用框架 ---- Hessian
使用Java创建Hessian服务有四个步骤: 1.创建Java接口作为公共API (client和server端 创建一个相同的借口) 2.使 ...
- Hessian轻量级二进制远程调用框架
Hessian轻量级二进制远程调用框架 Hessian是一个轻量级的二进制远程调用框架,官方文档地址,它主要包括Hessian远程调用协议.Hessian序列化协议以及客户端服务端代理等几部分,关于H ...
- Hessian——轻量级远程调用方案
Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...
- [转]Hessian——轻量级远程调用方案
Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...
- go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)
目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...
- JSON-RPC轻量级远程调用协议介绍及使用
这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用.jsonrpc4j使用Jackson类库实现Java对象与JSON对象之间的相互转换.jsonrpc4j包含一个JSON- ...
- go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])
目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...
- jfinal框架教程-学习笔记
jfinal框架教程-学习笔记 JFinal 是基于 Java 语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restfu ...
- Mina框架的学习笔记——Android客户端的实现
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
随机推荐
- 重构18-Replace exception with conditional(条件替代异常)
重构没有什么出处,是我平时经常使用而总结出来的.欢迎您发表任何改进意见或建议.我相信一定还有其他比较好的重构可以解决类似的问题. 我曾无数次面对的一个代码坏味道就是,使用异常来控制程序流程.您可能会 ...
- linux服务监控脚本
配置需要监控的服务器 数组定义:host_ports=(host_name=host_port=uri_path)host_name为容易识别的服务器名称host_port为服务器ip和服务端口uri ...
- C#中Invoke和BeginInvoke的区别
1.Invoke() 调用时,Invoke会阻止当前主线程的运行,等到 Invoke() 方法返回才继续执行后面的代码,表现出“同步”的概念. 2.BeginInvoke() 调用时,当前线程会启用线 ...
- 使用subversion搭建SVN
使用subversion搭建SVN需要用到的软件包有subversion,apr,apr-util,sqlite,zlib,因为在编译安装subversion时需要指明apr.apr-util.sql ...
- Windows重新建立图标缓存
有的时候,快捷方式的图标会因各种优化软件而变得面目全非,这时就需要重新建立图标缓存 新建一个文本文档,把文件的后缀名修改成.bat 的例如 icon.bat 在里面填写下面的内容: rem 关闭exp ...
- hdu-5686 Problem B(斐波那契数列)
题目链接: Problem B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- iPhone开发 Swift - NSNotification 通知
Swift创建Notification通知 创建一个SingleView Application 打开AppDelegate.swift,在方法 application(application:UIA ...
- 【ERROR】---Error executing "adb devices":ADB server didn't ACK
搭建环境 ionic emulate android 的时候出现问题 端口占用,找到占用端口的程序,结束进程再启动 重新ionic emulate android 还是报错,闪了一下说fail ...
- kettle菜鸟学习笔记2----第一个kettle转换的建立及执行
相关概念: Kettle数据清洗是采用元数据(Meta-data)驱动,以数据流的方式进行的,数据从数据源(数据库/文件等)在一系列相连的step之间依次向后流动,各个step完成对流经该step的数 ...
- android app性能优化大汇总(UI渲染性能优化)
UI性能测试 性能优化都需要有一个目标,UI的性能优化也是一样.你可能会觉得“我的app加载很快”很重要,但我们还需要了解终端用户的期望,是否可以去量化这些期望呢?我们可以从人机交互心理学的角度来考虑 ...