`
guazi
  • 浏览: 54500 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于hessian的一些认识

    博客分类:
  • java
阅读更多
Hessian是一个解耦合的远程调用包
1、hessian是基于http协议的,使用自己的序列化机制,这里和RMI不同,RMI是使用java的序列化机制,包路径不能改变。
2、Hessian中接口的包路径可以不一样,即:server端和client端的接口包路径可以不同(不知道类名可不可以不同),如:在server端开放接口为:com.topsoft.service.TestImpl在client端接收时为:com.topsoft.hessian.Test_Test
3、接口类的名字可以不一样,示例同上
4、远程调用hessian服务其实只需要一个接口,不需要依赖的entity。其中涉及到的实体,hessian以map形式来传递值
如:server端有方法:public TestEntity getObj(TestEntity entity);//其中TestEntity是一个测试实体。有三个简单的属性:name;pwd;key;
在client端可用如下方法调用:(当然客户端需要修改接口为 Map getObj(Map entity));
Map entity=new HashMap();
entity.put("name", "你好");
entity.put("pwd", "123");
entity.put("key", 123);
Map obj=test.getObj(entity);
注:如果在client端传实体,则必须与server端的实体一致。这里的实体需要继承Serializable接口,但是serialVersionUID 并不影响实体的一致性。
这里如果客户端接口修改为Object getObj(Object entity),会有两种情况,如果客户端CLASSAPTH存在TestEntity这个实体,则获得的是实体,如果不存在,则获得HashMap.

5、hessian传递Collection
Hessian对于容器的传递,如果client端容器中该对象类型在CLASSPATH中存在,则容器内是传递的对象,如果不存在,则被转换为HashMap对象。要注意:如果对象类型在CLASSPATH中存在,却想强转是会抛异常的。

6、hessian远程调用分析:
Hessian 的client远程调用时,其实是转化为http请求发送出(HttpURLConnection)去的,发送格式如下:
POST /test/testService HTTP/1.1
Content-Type: x-application/hessian
User-Agent: Java/1.5.0_15
Host: 127.0.0.1:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Transfer-Encoding: chunked

以下是请求中的方法和参数,经过hessian的转化这里不再贴了


返回内容格式如下:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/x-hessian
Transfer-Encoding: chunked
Date: Thu, 17 Dec 2009 08:39:13 GMT

以下是请求方法的返回结果,经过hessian的转化这里不再贴了


分享到:
评论
6 楼 swingboat 2010-02-22  
protobuf支持
5 楼 yacki 2010-02-18  
不太清楚hessian是否有好的客户端生成工具。

如果开发人员希望进行大量跨语言调用,比如C# Client调用Java Server,将遇到非常麻烦的客户端生成问题。

手工书写很容易产生server/client不一致问题。

而使用webservice则通常有成熟的客户端生成工具,不会发生这样的问题。

不知现在是否有较好的解决方案。
4 楼 codeutil 2010-01-25  

允许方法重载 是HessianProxyFactory调用 setOverloadEnabled.


3 楼 yanwt 2010-01-24  
还有一个是同一个接口中的名字不能相同。
2 楼 guazi 2010-01-22  
正是因为在客户端他把javaBean都转化为hashmap传过去的,所以就不支持方法重载。(如果两个方法就JavaBean参数不一样,无法确定是调用哪个方法)
1 楼 minzaipiao 2010-01-20  
它不支持方法的重载

相关推荐

    空间形式中距离函数的Hessian (2012年)

    在理论层面,它丰富了黎曼几何中关于距离函数的研究,加深了对空间形式这一特殊流形的认识。从应用的角度来看,对距离函数Hessian的计算有助于解决与最优化、信息几何等相关的实际问题。例如,在机器学习中,距离...

    Dubbo面试.zip

    这份PDF文档可能包含了关于Dubbo的深度面试问题和答案,涵盖了以下几个核心知识点: 1. **Dubbo概述**:Dubbo的核心特性,如服务注册与发现、远程调用、负载均衡、服务治理等。理解Dubbo的设计理念和目标,以及它是...

    BFGS.zip_BFGS的matlab程序_bfgs matlab_connecteddvb_swept6kc_拟牛顿

    这些文件可能包含了一些用于测试BFGS算法的示例问题,例如连接的双变量问题(Connected Double Variable Problem)或者某种特定的6节点电路模型(可能与“swept6kc”有关)。要理解这些文件的用途,你需要查看它们的...

    dubbo 简单测试DEMO

    【Dubbo简单测试DEMO详解】 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它提供了一套完整...通过实践这个DEMO,初学者能对Dubbo有更直观的认识,并为进一步深入学习和应用Dubbo打下坚实的基础。

    On quasi-translations of polynomial algebras

    多项式代数的自同构研究不仅仅是对代数结构的一种探索,它还可以帮助我们理解一些基本的代数问题,并对解决其他数学问题提供工具和视角。 拟平移与nice导子(Nice Derivations)之间的关系,也构成了这部分研究的一...

    MATLAB优化问题

    ### MATLAB优化问题详解 #### 一、引言 在科学与工程领域中,优化问题具有极其重要的地位。本文旨在通过MATLAB这一强大...此外,还可以进一步探讨线性规划、二次规划等其他类型的优化问题,以拓宽对优化领域的认识。

    2019 SEU-Xilinx国际暑期学校项目设计文档_第5组1

    分工不当,没有充分认识到算法和硬件调试的关联性;以及学习方法的局限,未能快速适应项目需求。为了改进,团队需要增强硬件和软件的综合能力,改进协作方式,并采用更有效的学习策略以应对类似挑战。

    徐伟杰更改简历1

    徐伟杰精通Java编程,熟悉面向对象设计,对Java集合及底层原理有清晰的认识。他还掌握了MySQL数据库,能够编写和优化SQL。 此外,徐伟杰具有Java并发编程经验,对Java并发工具包及其原理有良好的掌握。他对JVM...

    Primal-dual interior point method ppt

    在牛顿步骤中,通常会计算出目标函数关于变量的梯度,并用海森矩阵(Hessian)的逆来更新变量,从而逼近函数的最小值点。 在内点法中,还有一个概念叫做代理对偶间隙(Surrogate Duality Gap)。这是一个关于当前点...

    数学建模-3.第三章 非线性规划.zip

    以下是关于这个主题的一些关键知识点: 1. **定义**:非线性规划涉及到在一组约束条件下,寻找一个或多个变量的最优值,使得目标函数达到最大或最小,而目标函数和/或约束条件是非线性的。 2. **模型构成**:非...

    Efficient Numerical Inversion Using Multilayer Feedforward Neural Networks

    众所周知,二阶导数(或者Hessian矩阵)能够提供关于函数曲率的信息,这在优化算法中非常有用,可以显著提高算法的收敛速度和稳定性。 在实际操作中,一个函数首先通过神经网络进行学习。一旦学习成功,该函数就...

    Deep Learning.pdf

    根据提供的文件信息,我们可以发现该文档是一本关于深度学习的书籍内容摘录。具体来说,摘录的内容涵盖了深度学习的基本概念、历史趋势、数学基础(线性代数、概率论和信息论)、数值计算、机器学习基础以及深度前馈...

    开源框架 Spring Gossip

    认识 Spring 来认识 Spring 的一些特性,并初步了解一下什么叫作 IoC?什么叫作 DI? 简介 Spring Inversion of Control Dependency Injection <br> 核心容器 Spring 核心容器实作...

    最优化方法及其Matlab程序设计,最优化方法及其matlab程序设计pdf,matlab源码.zip

    通过阅读和修改这些代码,学习者可以提升自己的编程能力,同时对最优化理论有更直观的认识。 在实际应用中,最优化方法常用于机器学习的模型训练,比如神经网络的权重调整。在数据科学中,最优化被用来寻找最佳拟合...

    SIFT特征的提取与应用报告PPT

    - **边缘点的去除**:通过分析Hessian矩阵的主曲率来去除边缘点,具体方法是计算Hessian矩阵的迹(Trace)和行列式(Determinant),并使用一个阈值来判断是否为边缘点。 3. **为关键点指定方向参数**:为了使关键...

    dubbo源码解析

    RPC(Remote Procedure Call)远程过程调用机制是Dubbo的核心,了解RMI(Java远程方法调用)、Hessian、Thrift、WebService等RPC框架将有助于我们更好地理解Dubbo的工作原理。 Dubbo源码分析首先从源码阅读路径开始...

    MATLAB优化算法案例分析与应用(进阶篇)-配书代码

    直接法主要包括梯度法、拟牛顿法、共轭梯度法等,这些方法通常用于解决连续优化问题,特别是那些有解析梯度或Hessian矩阵的问题。间接法则包括遗传算法、模拟退火、粒子群优化等,适用于全局优化和无导数优化问题。 ...

    最优化方法期末考试复习

    海塞矩阵(Hessian Matrix)是二阶偏导数组成的矩阵,用于描述函数的曲率信息,特别是在求解极值点时非常关键。 8. 泰勒展开式: 泰勒公式是将光滑函数近似为多项式的方法,通过函数在某点的一阶、二阶乃至高阶导数...

    DIP-Basepaper.rar_图形图像处理_PDF_

    4. 图像特征提取:这部分可能会讲解边缘检测(如Sobel、Canny算法)、角点检测(如Harris角点检测、Hessian矩阵)以及纹理分析等技术。 5. 图像分割:这是图像处理中的重要环节,可能涉及阈值分割、区域生长、基于...

Global site tag (gtag.js) - Google Analytics