一、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>
四、结果验证
项目源码
相关推荐
- "common-interface"可能是一个包含公共接口的模块,这些接口定义了Hessian服务之间交互的数据结构和方法签名,确保客户端和服务端能正确解析和处理序列化后的数据。 - "hessian-client"和"hessian-server"则分别...
Hessian的目标是简化分布式系统之间的通信,通过减少网络传输的数据量来提高性能。与其他基于XML的RPC协议(如SOAP)相比,Hessian更简洁、快速,因为它使用了二进制编码,而非文本格式。 **一、Hessian协议基础** ...
Java和.net交互实例代码hessian.rar
在【描述】中提到的博客链接,可能详细介绍了如何使用Hessian进行客户端和服务端的交互。通常,使用Hessian的步骤包括: 1. **安装库**:在项目中引入Hessian的相应库,例如对于Java项目,可以添加Caucho的Hessian库...
1. **Hessian简介**:Hessian是由Caucho Technology开发的一种二进制Web服务协议,它提供了简洁、快速的数据传输方式,尤其适用于低带宽环境。Hessian支持RPC模式,允许服务端和客户端之间进行方法调用。 2. **Java...
Hessian是由Caucho公司开发的一种轻量级的Web服务协议,它的主要特点是使用二进制格式传输数据,相比XML或JSON,其在网络传输中具有更高的效率和更快的速度。Hessian支持Java、C++、Python等多种编程语言,能够实现...
比如,如果项目依赖于旧的API或者需要与旧系统兼容,那么Hessian3.1.6可能是合适的选择。如果追求更高的性能和安全性,那么Hessian4.0.7可能更优。在实际应用中,理解每个版本的特点和改进,能够帮助我们做出明智的...
- **跨语言支持**:除了Java之外,Hessian还支持.NET、Python等多种编程语言,这使得开发者可以在异构系统之间轻松地实现服务交互。 #### 使用场景 Hessian适用于需要高性能远程服务调用的应用场景,尤其适合于...
在IT行业中,跨平台通信是常见的需求,而Hessian作为一种二进制协议,因其轻量级、高效的特点,被广泛用于Java和C#等不同语言之间的远程调用(RPC)和数据交换。本文将深入探讨Hessian在Java服务端与C#客户端之间的...
至于"工具",有一些工具可以帮助开发者测试和调试Hessian服务,例如,Hessian Proxy工具允许你通过HTTP代理的方式交互Hessian服务,以便观察和分析传输的二进制数据。 总的来说,Hessian是一个值得学习的技术,尤其...
在IT行业中,Hessian是一种基于二进制协议的RPC(远程过程调用)框架,它使得客户端和服务端之间能够高效地进行数据交换。HessianServer指的是实现Hessian协议的服务端程序,通常用于构建分布式系统,使得不同的应用...
- **动态类型**:Hessian可以处理动态类型,无需预先定义复杂的接口或者数据结构。 - **透明性**:对于客户端来说,调用远程服务就像调用本地方法一样简单,无需关心底层的网络通信细节。 4. **安全性与优化**: ...
例如,内部系统间的通信、移动应用与后端服务器的交互,或者是跨语言的微服务通信。Hessian的轻量级特性使得它成为低延迟、高吞吐量通信的理想选择。 总结起来,Hessian是一种高效、轻量级的二进制RPC协议,常用于...
- Hessian(3.0)序列化及大数据处理:http://maillist.caucho.com/pipermail/hessian-interest/2007-June/000079.html - Hessian安全API:查看Hessian文档或官方公告 - Spring集成Hessian:...
Hessian的目标是简化分布式服务的实现,通过序列化对象为二进制格式,减少网络传输的数据量,从而提高通信效率。 Hessian协议的核心特点包括: 1. **二进制编码**:与XML或JSON等文本格式相比,Hessian使用二进制...
在实际开发中,合理地使用Hessian可以提高系统的可扩展性和可维护性。然而,随着微服务架构的普及,现代的远程调用解决方案如gRPC、Dubbo等也提供了更强大的功能和更高的性能,开发者可以根据具体需求选择适合的技术...