- 浏览: 420074 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (114)
- C++ (1)
- JAVA (58)
- sql,oracle,mysql (7)
- struts (2)
- tomcat (6)
- JS CSS (6)
- 其他 (7)
- javascript (4)
- exception (1)
- error (1)
- hashmap (1)
- hashset (1)
- python (1)
- sql (2)
- oracle (4)
- mysql (2)
- weblogic (3)
- session (2)
- http-only-cookie (1)
- httponly (1)
- cookie (1)
- ide (0)
- intellij (1)
- eclipse (2)
- idea (1)
- connection (2)
- maven (4)
- m2eclipse (2)
- m2e (2)
- InetAddress (1)
- DNS (1)
- web (1)
- goals (1)
- copy-dependencies (1)
- unpack (1)
- hash (1)
- 分布式 (1)
- gc (4)
- volatile (1)
- rsa (1)
- 加密 (1)
- 签名 (1)
- socket (1)
- tcp (1)
最新评论
-
xuxiaoyinliu:
谢谢,不错哦
有关cookie的httponly属性相关 -
雁行:
svn根本就不需要这么罗嗦的实现。
版本比较,直接出增量文件, ...
ant+cvs实现增量部署 -
ludatong110:
这个东西在IE里面会很明显的,我就碰到过IE中因为这个HTML ...
有关jqGrid应用里的字体大小不能控制的问题 -
labchy:
非常感谢 解决了问题
有关jqGrid应用里的字体大小不能控制的问题 -
tengyue5i5j:
Crusader 写道竟然有这么多人投良好。。。
楼主的思路有 ...
java实现一个栈,并提供取该栈中最大数的方法,复杂度O(1)
Hessian is a simple binary protocol for connecting web services. The com.caucho.hessian.client and com.caucho.hessian.server packages do not require any other Resin classes, so can be used in smaller clients, like applets.
利用Hessian 实现webService的发布是一种很简单的方式,下面写个简单的例子。
1. 编写要发布的服务接口
- package com.lht;
- public interface ISomeService {
- public String hello();
- public int add(int a,int b);
- }
package com.lht; public interface ISomeService { public String hello(); public int add(int a,int b); }
2. 编写实现类
- package com.lht;
- public class SomeServiceImpl implements ISomeService {
- public String hello() {
- // TODO Auto-generated method stub
- return "hello HessianDemo";
- }
- public int add(int a, int b) {
- // TODO Auto-generated method stub
- return a+b;
- }
- }
package com.lht; public class SomeServiceImpl implements ISomeService { public String hello() { // TODO Auto-generated method stub return "hello HessianDemo"; } public int add(int a, int b) { // TODO Auto-generated method stub return a+b; } }
3. 配置信息
- <web-app>
- <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>example.BasicService</param-value>
- </init-param>
- <init-param>
- <param-name>home-api</param-name>
- <param-value>example.Basic</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <url-pattern>/hello</url-pattern>
- <servlet-name>hello</servlet-name>
- </servlet-mapping>
- </web-app>
<web-app> <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>example.BasicService</param-value> </init-param> <init-param> <param-name>home-api</param-name> <param-value>example.Basic</param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/hello</url-pattern> <servlet-name>hello</servlet-name> </servlet-mapping> </web-app>
总结:
利用Hessian 实现分布式,变的相当的简单,就和开发简单的servlet一般。
Hessian的这个远程过程调用,完全使用动态代理来实现的,其实从客户端代码不难看出,HessianProxyFactory的create方法就是创建接口Basic的代理类,该类实现了Basic接口,JDK的proxy类会自动用 InvocationHandler 的实现类(该类在Hessian中表现为HessianProxy)的invoke方法体 来填充所生成代理类的方法体,从而实现远程调用,传输过程使用的是基于Http的二进制字节流。
RMI与Hessian的调用过程比较:
Hessian:客户端(basic.hello())——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果
RMI:客户端——>stub——>序列化——>skeleton——>远程方法——>序列化——>stub—— >输出结果
参考信息
1.http://hessian.caucho.com/
2.http://eis.blogdriver.com/eis/331413.html
几种基于HTTP协议的RPC性能比较
关键字: burlap hessian
RMI与Hessian的调用过程比较:
- Hessian:客户端(basic.hello())——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果
- RMI:客户端——>stub——>序列化——>skeleton——>远程方法——>序列化——>stub—— >输出结果
Hessian:客户端(basic.hello())——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果 RMI:客户端——>stub——>序列化——>skeleton——>远程方法——>序列化——>stub—— >输出结果
服务端的是一个简单的加密、解密方法,各种协议使用同一个实现的代码。
客户端是独立的java程序,分别用各种协议对服务端的方法进行调用。每一种协议循环调用n次,然后取平均值。
循环1,000次的测试
第一次
- Axis --------------->> Total time: 11123 ms, Avg time: 11.123 ms
- Burlap ------------->> Total time: 866 ms, Avg time: 0.866 ms
- Hessian ------------>> Total time: 581 ms, Avg time: 0.581 ms
- REST --------------->> Total time: 929 ms, Avg time: 0.929 ms
- AxisUsingWSDL2Java ->> Total time: 11998 ms, Avg time: 11.998 ms
Axis --------------->> Total time: 11123 ms, Avg time: 11.123 ms Burlap ------------->> Total time: 866 ms, Avg time: 0.866 ms Hessian ------------>> Total time: 581 ms, Avg time: 0.581 ms REST --------------->> Total time: 929 ms, Avg time: 0.929 ms AxisUsingWSDL2Java ->> Total time: 11998 ms, Avg time: 11.998 ms
第二次
- Axis --------------->> Total time: 11256 ms, Avg time: 11.256 ms
- Burlap ------------->> Total time: 816 ms, Avg time: 0.816 ms
- Hessian ------------>> Total time: 582 ms, Avg time: 0.582 ms
- REST --------------->> Total time: 919 ms, Avg time: 0.919 ms
- AxisUsingWSDL2Java ->> Total time: 11908 ms, Avg time: 11.908 ms
Axis --------------->> Total time: 11256 ms, Avg time: 11.256 ms Burlap ------------->> Total time: 816 ms, Avg time: 0.816 ms Hessian ------------>> Total time: 582 ms, Avg time: 0.582 ms REST --------------->> Total time: 919 ms, Avg time: 0.919 ms AxisUsingWSDL2Java ->> Total time: 11908 ms, Avg time: 11.908 ms
循环10,000次的测试
第一次
- Axis --------------->> Total time: 88013 ms, Avg time: 8.8013 ms
- Burlap ------------->> Total time: 5789 ms, Avg time: 0.5789 ms
- Hessian ------------>> Total time: 5162 ms, Avg time: 0.5162 ms
- REST --------------->> Total time: 8316 ms, Avg time: 0.8316 ms
- AxisUsingWSDL2Java ->> Total time: 112801 ms, Avg time: 11.2801 ms
Axis --------------->> Total time: 88013 ms, Avg time: 8.8013 ms Burlap ------------->> Total time: 5789 ms, Avg time: 0.5789 ms Hessian ------------>> Total time: 5162 ms, Avg time: 0.5162 ms REST --------------->> Total time: 8316 ms, Avg time: 0.8316 ms AxisUsingWSDL2Java ->> Total time: 112801 ms, Avg time: 11.2801 ms
第二次
- Axis --------------->> Total time: 87359 ms, Avg time: 8.7359 ms
- Burlap ------------->> Total time: 5784 ms, Avg time: 0.5784 ms
- Hessian ------------>> Total time: 5084 ms, Avg time: 0.5084 ms
- REST --------------->> Total time: 7983 ms, Avg time: 0.7983 ms
- AxisUsingWSDL2Java ->> Total time: 113234 ms, Avg time: 11.3234 ms
Axis --------------->> Total time: 87359 ms, Avg time: 8.7359 ms Burlap ------------->> Total time: 5784 ms, Avg time: 0.5784 ms Hessian ------------>> Total time: 5084 ms, Avg time: 0.5084 ms REST --------------->> Total time: 7983 ms, Avg time: 0.7983 ms AxisUsingWSDL2Java ->> Total time: 113234 ms, Avg time: 11.3234 ms
测试结果
Hessian最快,Burlap第二,REST第三,Axis最慢。前3种要比Axis快了10倍或者更多。
上面的测试,服务端用的是Resin-3.0.13,出于好奇,我又用Tomcat-5.5.9测试了一把,结果是Resin确实比Tomcat快些。Tomcat-5.5.9 循环10,000次的测试
发表评论
-
【Java TCP/IP Soket】— 消息边界的问题解决
2015-08-11 09:47 1457转自:http://blog.csdn.net/ ... -
java中volatile解释
2015-05-28 16:28 723http://www.cnblogs.com/aigongs ... -
Java中的substring真的会引起内存泄露么?
2015-05-27 13:18 957转: http://droidyue.com/blog/ ... -
成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
2015-05-27 12:24 632转:http://www.importnew.com ... -
成为Java GC专家(3)—如何优化Java垃圾回收机制
2015-05-27 12:23 797转:http://www.importnew.com ... -
成为JavaGC专家(2)—如何监控Java垃圾回收机制
2015-05-27 12:20 652转:http://www.importnew.com ... -
成为JavaGC专家(1)—深入浅出Java垃圾回收机制
2015-05-27 12:16 516转:http://www.importnew.com ... -
《深入分析Java Web技术内幕》-样章示图总结
2013-01-17 11:46 1325试读完本书的样章章节后,感受颇深,其实单从样 ... -
eclipse中(装了插件m2eclipse后的)导入maven工程显示"感叹号"
2013-01-15 16:02 7385有时候导入一些开源工程(maven结构的),在 ... -
(转)分析模式 之 参与者(Party)
2012-10-22 16:39 961在我们分析模型的时 ... -
(转)java.sql.SQLException: (无法从套接字获取更多数据)数据大小超出此类型的最大值
2012-10-22 16:38 5526转至:http://linwei-211.i ... -
有关hashmap,hashset的相关总结
2011-09-16 17:32 3052这篇转自http://hi.baidu.com ... -
有关JAVA异常和错误(ERROR)的处理
2011-09-15 20:41 19177最近遇到有关ERROR的处理问题,下面这篇文章 转至: ... -
XFire 、Axis2、CXF、JWS、java6 区别 (转)
2011-06-13 22:50 1924XFire VS AxisXFire是与Axis2 并列的 ... -
转载[Connection reset,Connection reset by peer,Software caused connection abort :]
2011-06-08 13:16 9994Connection reset,Connection ... -
java实现一个栈,并提供取该栈中最大数的方法,复杂度O(1)
2011-06-07 15:18 2163记得是哪个面试题里的,这里只想到一个简单的方法,大家看看 ... -
Listener Servlet和filter的应用
2011-05-16 22:21 891下面这段话是小总结: Listener是Ser ... -
转载【有关JSP中的转发和重定向用法】
2011-05-15 19:05 1756转自: http://blog.csdn.net/cyhjr ... -
转载【Java对象的强、软、弱和虚引用】
2011-05-13 22:47 8941.Java对象的强、软、弱和虚引用 在JDK 1.2以 ... -
有关JNDI的理解
2011-04-14 11:22 973JAVA EE规范里的jndi是为了解决下面两个问题: ...
相关推荐
**Hessian:深入理解与应用** Hessian是一种二进制Web服务协议,它由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation,RMI)服务。Hessian的目标是简化分布式系统...
"工具"可能指的是使用Hessian相关的开发工具或框架,例如HessianProxyFactory、HessianServlet等。 至于【压缩包子文件的文件名称列表】中的"hessian_cilent",这可能是Hessian的客户端实现示例代码或者库文件。...
Hessian是一种高效的二进制序列化协议,常用于实现轻量级的远程过程调用(RPC)。这个案例涉及到了Hessian在Java和Python之间的跨语言通信。以下是对Hessian技术及其应用的详细解释: 1. **Hessian简介**:Hessian...
这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...
在图像处理领域,多尺度Hessian滤波器是一种高级的图像增强技术,它主要用于检测图像中的线性结构,特别是对于微弱或者噪声较大...通过MATLAB提供的相关函数,我们可以方便地实现这一算法,进行有效的图像分析和处理。
《Hessian应用详解》 Hessian,一种轻量级的二进制协议,因其高效、简单的特点,在分布式服务中被广泛应用。它允许开发者在HTTP上透明地调用远程方法,就像是本地方法调用一样,极大地提高了开发效率和系统性能。...
在IT领域,尤其是在医学图像分析中,Hessian矩阵是一个重要的数学工具,用于图像特征检测,特别是在血管分割的应用中。本文将深入探讨标题和描述中提到的"基于Hessian矩阵增强的心血管分割"这一主题。 Hessian矩阵...
- 在实际开发中,我们可能会需要编写一些辅助工具类来处理Hessian的相关操作,例如Hessian2Input和Hessian2Output,它们用于读写Hessian序列化的二进制流。 6. **安全性与优化**: - 虽然Hessian协议效率高,但其...
1. **Hessian库**:这是实现Hessian RPC的基础,包含了序列化和反序列化的类以及远程调用的相关接口。主要的jar包有`hessian.jar`,它提供了Hessian协议的实现。 2. **Spring库**:Spring的核心库,如`spring-...
下面将详细介绍Hessian服务端的相关知识点。 1. **Hessian协议**: Hessian是Adobe公司开发的一种高效的二进制Web服务协议。它将数据序列化为紧凑的字节流,比XML更加节省带宽和CPU资源,提高了网络通信的效率。...
- Hessian相关的库文件,如HessianAndroidClient.jar,这是Android客户端与Hessian服务器通信的必要库。 - 示例代码,展示如何创建HessianProxy,发起异步请求,并处理回调结果。 - 可能还包含了自定义的异步请求...
SpringMVC 和 Hessian 是两种在 Java 开发中常见的技术,它们在构建分布式系统时扮演着重要角色。SpringMVC 是 Spring 框架的一部分,主要用于构建 Web 应用的 MVC(模型-视图-控制器)架构。而 Hessian 是一种轻量...
在Spring框架中,Hessian是一种轻量级的远程方法调用(RPC)协议,它能够实现Java对象到字节流的序列化,从而使得服务端的对象可以在客户端直接调用,仿佛对象就在本地一样。Hessian提供了高效的二进制RPC协议,使得...
Hessian的设计目标是为了提供高效、简单的远程调用方式,使得客户端能够像调用本地方法一样调用远程服务。 **独立使用Hessian** 在不依赖任何框架的情况下,使用Hessian的步骤如下: 1. **添加依赖**:首先,...
在这个“hessian服务端 客户端 可运行”的压缩包文件中,很可能包含了一个完整的示例,让我们来详细探讨Hessian在服务端和客户端的实现及其重要性。 首先,我们来理解一下Hessian服务端。在Java中,Hessian服务端...
Hessian是一种二进制协议,它被设计用于提高远程调用的效率,特别是在Java和C++之间进行跨语言通信时。Hessian的目标是提供一种快速、简洁的数据序列化和远程方法调用(RPC)机制。在这个简单的demo中,我们将探讨...
Hessian 协议格式 Hessian 协议是一种轻量级的 remoting on http 工具,使用简单的方法提供了 RMI 的功能。采用的是二进制 RPC 协议,所以它很适合于发送二进制数据。Hessian 主要用作面向对象的消息通信。 ...
在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...
在实际项目中,结合标签中的“源码”和“工具”,深入研究Hessian的源码和相关工具,可以帮助我们更好地应用这一技术。而“stxm”可能是对某种特定场景或功能的缩写,具体的含义可能需要更多的上下文信息来解读。
赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...