Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

常见的远程调用的技术:

1、webservice(CXF、axis)soap

2、httpclient

3、hessian---http协议、二进制数据

4、dubbo---阿里巴巴

hessian有两种发布服务的方式:

1、使用hessian框架自己提供的Servlet发布

2、和spring整合发布服务

一、什么是Hessian

Hessian是一个基于 binary-RPC 实现的远程通讯 library。使用二进制传输数据。
Hessian通常通过Web应用来提供服务,通过接口暴露。
Servlet和Spring的DispatcherServlet都可以把请求转发给Hessian服务。
由以下两种方式提供,分别为:
com.caucho.hessian.server.HessianServlet、org.springframework.web.servlet.DispatcherServlet。

二、入门案例

2.1 服务端开发:
第一步:创建一个web项目,并导入hessian的jar包
第二步:创建一个接口

public interface HelloService {
  public String sayHello(String name);
  public List<User> findAllUser();
}

第三步:提供上面接口的实现类

public class HelloServiceImpl implements HelloService{
  public String sayHello(String name) {
  System.out.println("sayHello方法被调用了");
  return "hello " + name;
} public List<User> findAllUser() {
  List<User> list = new ArrayList<User>();
  list.add(new User(1, "小王"));
  list.add(new User(2,"小白"));
  return list;
}
}

第四步:在web.xml中配置服务

<servlet>
<servlet-name>hessian</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>cn.zang.service.HelloServiceImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>cn.zang.service.HelloService</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hessian</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>

wsimport
wsdl2java

2.2 客户端开发:
第一步:创建一个客户端项目,并导入hessian的jar包
第二步:创建一个接口(和服务端接口对应)

public interface HelloService {
  public String sayHello(String name);
  public Object findAllUser();
}

第三步:使用hessian提供的方式创建代理对象调用服务

HessianProxyFactory factory = new HessianProxyFactory();
HelloService proxy = (HelloService) factory.create(HelloService.class, "http://localhost:8089/hessian_server/hessian");
String ret = proxy.sayHello("test");
System.out.println(ret);
Object users = proxy.findAllUser();
System.out.println(users);

远程调用——hessian使用入门的更多相关文章

  1. Spring远程调用技术<2>-Hessian和Burlap

    上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...

  2. Hessian怎样实现远程调用

    1.Spring中除了提供HTTP调用器方式的远程调用,还对第三方的远程调用实现提供了支持,其中提供了对Hessian的支持. Hessian是由Caocho公司发布的一个轻量级的二进制协议远程调用实 ...

  3. [转载] 基于Dubbo的Hessian协议实现远程调用

    转载自http://shiyanjun.cn/archives/349.html Dubbo基于Hessian实现了自己Hessian协议,可以直接通过配置的Dubbo内置的其他协议,在服务消费方进行 ...

  4. Hessian——轻量级远程调用方案

    Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...

  5. 基于Dubbo的Hessian协议实现远程调用

    Dubbo基于Hessian实现了自己Hessian协议,可以直接通过配置的Dubbo内置的其他协议,在服务消费方进行远程调用,也就是说,服务调用方需要使用Java语言来基于Dubbo调用提供方服务, ...

  6. 远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较

    一.综述 本文比较了RMI.Hessian.Burlap.Httpinvoker.WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能. RMI是java语言本身提供的远程通讯 ...

  7. [转]Hessian——轻量级远程调用方案

    Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...

  8. Hessian轻量级二进制远程调用框架

    Hessian轻量级二进制远程调用框架 Hessian是一个轻量级的二进制远程调用框架,官方文档地址,它主要包括Hessian远程调用协议.Hessian序列化协议以及客户端服务端代理等几部分,关于H ...

  9. 架构师之路-在Dubbo中开发REST风格的远程调用

    架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构 http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b 概 ...

随机推荐

  1. Spring的自动装配

    在Spring中对自定义的引用类型注入时可以实现自动赋值.但是必须依赖set方法:  自动装配功能有两种: <!-- autowire:"byType" --根据class匹 ...

  2. java网络编程(套接字)

    套接字是java提供一套进行网络通信的API---TCP/UDP: ISO七层模型 物理层 .数据链路层 .传输层-IP. 网络层-UDP/TCP .会话层 . 表示层. 应用层 ---HTTP FT ...

  3. 使用threadpool并发测试,报错HTTPConnectionPool Max retires exceeded

    解决方法:和以下答案一致 https://blog.csdn.net/qq_21405949/article/details/79363084 场景: 在做爬虫项目或者是在发送网络请求的时候,一般都会 ...

  4. HDU 6330.Problem L. Visual Cube-模拟到上天-输出立方体 (2018 Multi-University Training Contest 3 1012)

    6330.Problem L. Visual Cube 这个题就是输出立方体.当时写完怎么都不过,后来输出b<c的情况,发现这里写挫了,判断失误.加了点东西就过了,mdzz... 代码: //1 ...

  5. hdu6231

    hdu6231 题意 给出一些数字,对于任意长度不小于 \(k\) 的区间,把第 \(k\) 大数加入到一个新的数组 \(B\) 中,求 \(B\) 数组第 \(m\) 大数. 分析 二分答案 \(x ...

  6. 【C++】类的两种实例化方法

    直接上代码: #include<stdio.h> #include<string> #include<iostream> using namespace std; ...

  7. JDK/Java里的设计模式

    JDK/Java里的设计模式

  8. Codeforces 914 C Travelling Salesman and Special Numbers

    Discription The Travelling Salesman spends a lot of time travelling so he tends to get bored. To pas ...

  9. 显示字符 Exercise06_12

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:显示字符 *1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J ...

  10. Problem X: 零起点学算法22——华氏摄氏温度转换

    #include<stdio.h> int main() { float f,c; while(scanf("%f",&f)!=EOF) c=*(f-); pr ...