`

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

二、简单实例

服务器端:

        jar包(hessian-4.0.37.jar)

        设计一个接口,用来给客户端调用
        实现该接口的动能
        配置web.xml,配置相应的servlet
        对象必须实现Serializable接口
        对于复杂对象可以使用Map的方法传递

 客户端:
        jar包(hessian-4.0.37.jar)
        具有和服务器端结构一样的接口和实体类。包括命名空间都最好一样。利用HessianProxyFactory调用远程接口

 

1.编写服务端代码

package com.hessian.simple.entity;

import java.io.Serializable;

public class User implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	private String userName;
	private String password;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 

package com.hessian.simple;

import java.util.List;
import java.util.Map;

import com.hessian.simple.entity.User;

public interface IHello {
	public String sayHello(String name);
	public String getUserList(List<User> users);
	public String getUserMap(Map<String, User> maps);
}

 

package com.hessian.simple.impl;

import java.util.List;
import java.util.Map;

import com.hessian.simple.IHello;
import com.hessian.simple.entity.User;

public class IHelloImpl implements IHello {

	public String sayHello(String name) {
		return "Hello," + name;
	}

	public String getUserList(List<User> users) {
		StringBuffer stringBuffer = new StringBuffer();
		for (User user : users) {
			stringBuffer.append("[");
			stringBuffer.append(user.getUserName());
			stringBuffer.append("--");
			stringBuffer.append(user.getPassword());
			stringBuffer.append("]");
		}
		return stringBuffer.toString();
	}
	
	public String getUserMap(Map<String, User> maps){
		StringBuffer stringBuffer = new StringBuffer();
		for(String key : maps.keySet()){
			stringBuffer.append("[");
			stringBuffer.append(maps.get(key).getUserName());
			stringBuffer.append("--");
			stringBuffer.append(maps.get(key).getPassword());
			stringBuffer.append("]");
		}
		return stringBuffer.toString();
	}
}

 

配制web.xml

<!--   Hessian -->
<servlet>
	<servlet-name>Hello</servlet-name>
	<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
	<init-param>
		<param-name>home-class</param-name>
		<param-value>com.hessian.simple.impl.IHelloImpl</param-value>
	</init-param>
	<init-param>
		<param-name>home-api</param-name>
		<param-value>com.hessian.simple.IHello</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>Hello</servlet-name>
	<url-pattern>/Hello</url-pattern>
</servlet-mapping>

 客户端测试类

package com.hessian.test;

import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.caucho.hessian.client.HessianProxyFactory;
import com.hessian.simple.IHello;
import com.hessian.simple.entity.User;

public class ClientTest {

	public static String url = "http://127.0.0.1:8080/Hello";

	public static void main(String[] args) {
		HessianProxyFactory factory = new HessianProxyFactory();
		try {
			IHello iHello = (IHello) factory.create(IHello.class, url);
			System.out.println(iHello.sayHello("tzz"));
			User user1 = new User();
			user1.setUserName("a1");
			user1.setPassword("123456");
			User user2 = new User();
			user2.setUserName("a2");
			user2.setPassword("123456");
			List<User> users = new ArrayList<User>();
			users.add(user1);
			users.add(user2);
			System.out.println(iHello.getUserList(users));
			Map<String, User> maps = new HashMap<String, User>();
			maps.put("user1", user1);
			maps.put("user2", user2);
			System.out.println(iHello.getUserMap(maps));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
}

 

 

 

分享到:
评论

相关推荐

    hessian简单实例

    在“hessian简单实例”中,我们有两个关键部分:`hessian-server`和`hessian-client`。`hessian-server`是服务端程序,它实现了我们需要暴露给客户端调用的方法;而`hessian-client`则是客户端程序,它负责连接到...

    Hessian 学习 例子 实例

    接下来,我们通过一个简单的实例来加深理解。假设我们有一个`Person`类,包含`name`和`age`两个字段。我们可以创建一个服务,该服务接受一个`Person`对象并返回其年龄。服务端使用Hessian序列化`Person`对象,客户端...

    hessian学习实例

    通过实践这些例子,你可以更好地理解Hessian的工作机制,以及如何在实际项目中应用它。同时,这也是一个很好的起点,帮助你进一步探索如何优化Hessian服务的性能,或者与其他技术(如负载均衡、安全控制等)进行集成...

    spring mvc hessian maven简单实例

    在"Spring MVC Hessian Maven简单实例"中,我们将探讨如何将这三个技术结合在一起,以实现一个远程服务调用的解决方案。 首先,我们需要创建一个Maven项目,配置pom.xml文件来管理Spring MVC、Hessian和其它相关...

    hessian使用小例子

    现在,让我们通过一个简单的Java示例来了解如何使用Hessian。在这个例子中,我们将创建一个服务器端服务并暴露一个方法,然后在客户端调用这个远程方法。 1. 首先,我们需要在服务器端定义一个服务接口和实现类。...

    Hessian工程实例

    Hessian是由Caucho Technology开发的一种二进制RPC(Remote Procedure Call)协议,它允许Java对象以高效的二进制格式在网络间进行传输,使得远程调用如同本地调用一样简单。在这个工程实例中,我们将探讨如何在...

    spring 集成 hessian例子

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

    hessian包及一个简单的使用实例

    这里我们提供了一个使用Hessian 4.0.37的简单实例,包括服务器端和客户端的创建。 #### 服务器端(Server) 首先,定义一个服务接口和其实现: ```java public interface HelloWorldService { String sayHello...

    Hessian学习简单demo

    在这个简单的demo中,我们将探讨Hessian的核心概念,以及如何在实际应用中使用它。 首先,我们需要理解什么是数据序列化。数据序列化是将对象的状态转化为可存储或传输的形式的过程。在Hessian中,这个过程使得Java...

    hessian 使用实例

    Hessian提供了一种简单、快速的方式将Java对象序列化为字节流,然后在服务端和客户端之间进行传输。这种方式比XML或JSON等文本格式更加高效,因为它的数据体积小,解析速度快。 ### Hessian的基本原理 Hessian协议...

    hessian入门小例子

    总结一下,Hessian入门小例子通过创建一个简单的Hessian服务和客户端,展示了如何利用Hessian协议进行远程调用。通过这个例子,开发者可以学习如何在Java项目中集成Hessian,提升服务间的通信效率,同时减少网络开销...

    Hessian实例下载

    Hessian的目标是提供一种快速、简单的方式来进行跨网络的对象方法调用,使得分布式系统开发更为便捷。在这个“Hessian实例”中,我们可以找到Hessian在实际应用中的具体示例和相关库文件。 标题提及的“Hessian实例...

    Hessian例子.rar

    在Hessian的例子中,我们通常会看到以下关键知识点: 1. **序列化与反序列化**:Hessian协议能够将Java对象序列化为二进制格式,然后在网络上传输,到达目的地后进行反序列化恢复成原来的对象。这种方式相比XML或...

    C#中Hessian的使用例子

    以下是一个简单的例子: ```csharp // 服务端接口 [ServiceContract] public interface IMyService { [OperationContract] string HelloWorld(); } // 服务端实现 public class MyServiceImpl : IMyService { ...

    hessian通讯的安卓实现的简单DEMO

    这个“hessian通讯的安卓实现的简单DEMO”是一个示例项目,用于展示如何在Android平台上利用Hessian进行通信。下面将详细介绍Hessian在Android中的应用以及相关知识点。 1. **Hessian协议**:Hessian由Caucho公司...

    基于spring+hessian框架的webservice实例

    在这个实例中,我们学习了如何利用Spring的自动装配和Hessian的高效通讯能力,实现了一个简单的Web Service。这种方式适用于需要快速、轻量级交互的场景,特别适合于内部服务之间的通信,或者对性能有较高要求的应用...

    Hessian例子.doc

    在例子中,通过`factory.create(IHessian.class, url)`创建了`IHessian`接口的代理实例,并将服务URL传入。 - `HessianTest`的`main`方法展示了如何使用代理调用远程服务。`url`的格式是`...

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

    在Spring中集成Hessian,可以方便地实现服务的发布和消费,使得系统间的通信变得更加简单。 1. **配置Hessian服务端** - 首先,我们需要创建一个服务接口和服务实现类。 - 在Spring的配置文件中,使用`&lt;bean&gt;`...

Global site tag (gtag.js) - Google Analytics