zoukankan      html  css  js  c++  java
  • 关于hessian的一些认识

    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)去的,发送格式如下:
    Java代码
    1. POST /test/testService HTTP/1.1  
    2. Content-Type: x-application/hessian   
    3. User-Agent: Java/1.5.0_15   
    4. Host: 127.0.0.1:8080  
    5. Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2  
    6. Connection: keep-alive   
    7. Transfer-Encoding: chunked   
    8.   
    9. 以下是请求中的方法和参数,经过hessian的转化这里不再贴了  


    返回内容格式如下:
    Java代码
    1. HTTP/1.1 200 OK   
    2. Server: Apache-Coyote/1.1  
    3. Content-Type: application/x-hessian   
    4. Transfer-Encoding: chunked   
    5. Date: Thu, 17 Dec 2009 08:39:13 GMT   
    6.   
    7. 以下是请求方法的返回结果,经过hessian的转化这里不再贴了  

  • 相关阅读:
    javascript之数组的6种去重方法
    javascript之存储数据-cookie,localStorage,sessionStorage
    {less}
    javaScript的几个问题简答
    33 web页面-页面操作(鼠标、键盘操作)
    32 web页面-页面操作(元素等待、三大切换)
    31 Xpath复杂元素定位 find_element
    30 selenium (元素定位、webelement对象)
    29 HTML(定位标签的属性)
    28 selenium
  • 原文地址:https://www.cnblogs.com/sunwei2012/p/1671671.html
Copyright © 2011-2022 走看看