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

【异构系统数据交互之Hessian】

阅读更多

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

    还有一种远程调用方法就是HttpInvoker:他也是将参数和返回值通过Java的序列化机制进行编组和反编组,它具有RMI的支持所有可序列化对象的优点。试使用Http协议传输二进制流的,同时又具有Hessian、Burlap(传输xml文本)的优点。

 

 

二、写一个简单的hessian通信所需要知道写哪些内容?

Hessian:写一个Hessian需要注意的问题:

     1、JAVA服务器端必须具备以下几点:

        包含Hessian的jar包

        设计一个接口,用来给客户端调用

        实现该接口的动能

        配置web.xml,配置相应的servlet

        对象必须实现Serializable接口

        对于复杂对象可以使用Map的方法传递

 

     2、客户端必须具备以下几点:

        java客户端包含Hessian.jar包

        具有和服务器端结构一样的接口和实体类。包括命名空间都最好一样。

       利用HessianProxyFactory调用远程接口

 

三、编码实战

    1) 客户端

 

接口:

package cn.com.hession.hessiondemo;

public interface BasicAPI {

public void setGreeting(String greeting);

public String hello();

public UserVO getUser();

}

 

VO类:

package cn.com.hession.hessiondemo;

import java.io.Serializable;

public class UserVO implements Serializable {

       String userName = "";

       String password = "";

 

public UserVO(String user, String pwd) {

           this.userName = user;

          this.password = pwd;

}

public String getUserName() {

          return userName;

}

 

public String getPassword() {

        return password;

}

}

 

测试Main入口

package cn.com.hession.hessiondemo;

 

import com.caucho.hessian.client.HessianProxyFactory;

 

/**

<!-- http://mvnrepository.com/artifact/com.caucho/hessian -->

<dependency>

   <groupId>com.caucho</groupId>

   <artifactId>hessian</artifactId>

   <version>4.0.38</version>

</dependency>

 */

public class App 

{

    public static void main( String[] args ) throws Exception

    {

    String url ="http://127.0.0.1:8080/HessianServer/hello";

    HessianProxyFactory factory = new HessianProxyFactory();

    BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);

    System.out.println("Hello:" + basic.hello());

    System.out.println("Hello:" + basic.getUser().getUserName());

    System.out.println("Hello:" + basic.getUser().getPassword());

    basic.setGreeting("Client Say : HelloGreeting");

    System.out.println("Hello:" + basic.hello());

    }

}

 

     

    2)服务端

 

接口:

package com.service;

 

import cn.com.hession.hessiondemo.UserVO;

 

public interface BasicAPI {

public void setGreeting(String greeting);

public String hello();

public UserVO getUser();

}

 

接口实现类:

package com.service.impl;

 

import com.service.BasicAPI;

 

import cn.com.hession.hessiondemo.UserVO;

 

public class BasicService implements BasicAPI {

private String _greeting = "Hello, world";

 

public void setGreeting(String greeting) {

_greeting = greeting;

System.out.println("set greeting success:" + _greeting);

}

 

public String hello() {

return _greeting + ",Server Say";

}

 

public UserVO getUser() {

return new UserVO("Server Say:  prance", "meshow");

}

}

 

VO类

package cn.com.hession.hessiondemo;

import java.io.Serializable;

public class UserVO implements Serializable {

     String userName = "snoopy";

     String password = "showme";

 

public UserVO(String user, String pwd) {

      this.userName = user;

       this.password = pwd;

}

 

public String getUserName() {

       return userName;

}

 

public String getPassword() {

          return password;

}

}

 

配置文件

 <servlet>

  <servlet-name>hello</servlet-name>

  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>

  <init-param>

  <param-name>service-class</param-name>

  <param-value>com.service.impl.BasicService</param-value>

  </init-param>

  </servlet>

  

  <servlet-mapping>

  <servlet-name>hello</servlet-name>

  <url-pattern>/hello</url-pattern>

  </servlet-mapping>

 

四、结果验证



 

 

 



 

 

 

 



 

 

项目源码

  • 大小: 32.4 KB
  • 大小: 36.6 KB
  • 大小: 40.8 KB
0
2
分享到:
评论

相关推荐

    Hessian 的字段序列化小记

    - "common-interface"可能是一个包含公共接口的模块,这些接口定义了Hessian服务之间交互的数据结构和方法签名,确保客户端和服务端能正确解析和处理序列化后的数据。 - "hessian-client"和"hessian-server"则分别...

    Hessian

    Hessian的目标是简化分布式系统之间的通信,通过减少网络传输的数据量来提高性能。与其他基于XML的RPC协议(如SOAP)相比,Hessian更简洁、快速,因为它使用了二进制编码,而非文本格式。 **一、Hessian协议基础** ...

    Java和.net交互实例代码hessian.rar

    Java和.net交互实例代码hessian.rar

    hessian

    在【描述】中提到的博客链接,可能详细介绍了如何使用Hessian进行客户端和服务端的交互。通常,使用Hessian的步骤包括: 1. **安装库**:在项目中引入Hessian的相应库,例如对于Java项目,可以添加Caucho的Hessian库...

    hessian案例,hessian案例

    1. **Hessian简介**:Hessian是由Caucho Technology开发的一种二进制Web服务协议,它提供了简洁、快速的数据传输方式,尤其适用于低带宽环境。Hessian支持RPC模式,允许服务端和客户端之间进行方法调用。 2. **Java...

    利用hessian进行系统通信实例教程

    Hessian是由Caucho公司开发的一种轻量级的Web服务协议,它的主要特点是使用二进制格式传输数据,相比XML或JSON,其在网络传输中具有更高的效率和更快的速度。Hessian支持Java、C++、Python等多种编程语言,能够实现...

    Hessian多个版本打包下载

    比如,如果项目依赖于旧的API或者需要与旧系统兼容,那么Hessian3.1.6可能是合适的选择。如果追求更高的性能和安全性,那么Hessian4.0.7可能更优。在实际应用中,理解每个版本的特点和改进,能够帮助我们做出明智的...

    Hessian应用

    - **跨语言支持**:除了Java之外,Hessian还支持.NET、Python等多种编程语言,这使得开发者可以在异构系统之间轻松地实现服务交互。 #### 使用场景 Hessian适用于需要高性能远程服务调用的应用场景,尤其适合于...

    hessian java +c# 数据测试

    在IT行业中,跨平台通信是常见的需求,而Hessian作为一种二进制协议,因其轻量级、高效的特点,被广泛用于Java和C#等不同语言之间的远程调用(RPC)和数据交换。本文将深入探讨Hessian在Java服务端与C#客户端之间的...

    Hessian 学习 例子 实例

    至于"工具",有一些工具可以帮助开发者测试和调试Hessian服务,例如,Hessian Proxy工具允许你通过HTTP代理的方式交互Hessian服务,以便观察和分析传输的二进制数据。 总的来说,Hessian是一个值得学习的技术,尤其...

    hessianServer

    在IT行业中,Hessian是一种基于二进制协议的RPC(远程过程调用)框架,它使得客户端和服务端之间能够高效地进行数据交换。HessianServer指的是实现Hessian协议的服务端程序,通常用于构建分布式系统,使得不同的应用...

    hessian简单实例

    - **动态类型**:Hessian可以处理动态类型,无需预先定义复杂的接口或者数据结构。 - **透明性**:对于客户端来说,调用远程服务就像调用本地方法一样简单,无需关心底层的网络通信细节。 4. **安全性与优化**: ...

    hessian-example

    例如,内部系统间的通信、移动应用与后端服务器的交互,或者是跨语言的微服务通信。Hessian的轻量级特性使得它成为低延迟、高吞吐量通信的理想选择。 总结起来,Hessian是一种高效、轻量级的二进制RPC协议,常用于...

    Hessian 使用小结

    - Hessian(3.0)序列化及大数据处理:http://maillist.caucho.com/pipermail/hessian-interest/2007-June/000079.html - Hessian安全API:查看Hessian文档或官方公告 - Spring集成Hessian:...

    Java Hessian小试(转)

    Hessian的目标是简化分布式服务的实现,通过序列化对象为二进制格式,减少网络传输的数据量,从而提高通信效率。 Hessian协议的核心特点包括: 1. **二进制编码**:与XML或JSON等文本格式相比,Hessian使用二进制...

    hessian实现远程调用

    在实际开发中,合理地使用Hessian可以提高系统的可扩展性和可维护性。然而,随着微服务架构的普及,现代的远程调用解决方案如gRPC、Dubbo等也提供了更强大的功能和更高的性能,开发者可以根据具体需求选择适合的技术...

Global site tag (gtag.js) - Google Analytics