zoukankan      html  css  js  c++  java
  • 为啥要使用Hessian

    1、为啥要使用Hessian?

      有需求就有市场,挨踢界也是一样,想要实现远程调用,Hessian就应运而生。

      场景:有一个后台系统,基本上所有的用户管理都在这个系统里操作,其中有一个方法是添加用户的方法,再有一个前台系统,要实现添加用户的方法,现在有一个办法,就是把后台系统中的添加用户的方法原原本本的拷贝一份过来,酱紫有一个很大的弊病就是以后要同时维护两个地方,作为一名程序猿,这种情况是要绝对杜绝的。

      终极解决方法:使用Hessian来实现远程通信的功能,通过简单的配置就可以实现客户端(前台)直接调用服务端(后台)的方法(添加用户),看起来高大上有木有!!!

    2、什么是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协议访问,无法穿透防火墙。

    3、写一个Hessian需要注意的问题

      1、JAVA服务器端必须具备以下几点:
            包含Hessian的jar包
            设计一个接口,用来给客户端调用
            实现该接口的动能
            配置web.xml,配置相应的servlet
            对象必须实现Serializable接口
            对于复杂对象可以使用Map的方法传递
         2、客户端必须具备以下几点:
            java客户端包含Hessian.jar包
            具有和服务器端结构一样的接口和实体类。包括命名空间都最好一样(实验证明可以不一样,但是为啥要整成不一样的呢,有些地方创新是好事,但是在这里就没必要了,这叫奇葩)。利用HessianProxyFactory调用

  • 相关阅读:
    IDEA快捷键
    关于redis key命名规范的设计 【转载】
    Mybatis数据源与连接池 【转载】
    通过缓冲区读文件和非缓冲区读文件有什么区别
    BCB6 使用正则表达式的例子
    QT在子窗口外单击关闭子窗口
    QT5 中文乱码
    QT 鼠标右键菜单
    关于线程池的几个问题
    关于ConcurentHashMap的几个问题
  • 原文地址:https://www.cnblogs.com/ontheroad_lee/p/3797218.html
Copyright © 2011-2022 走看看