一、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-server`和`hessian-client`。`hessian-server`是服务端程序,它实现了我们需要暴露给客户端调用的方法;而`hessian-client`则是客户端程序,它负责连接到...
接下来,我们通过一个简单的实例来加深理解。假设我们有一个`Person`类,包含`name`和`age`两个字段。我们可以创建一个服务,该服务接受一个`Person`对象并返回其年龄。服务端使用Hessian序列化`Person`对象,客户端...
通过实践这些例子,你可以更好地理解Hessian的工作机制,以及如何在实际项目中应用它。同时,这也是一个很好的起点,帮助你进一步探索如何优化Hessian服务的性能,或者与其他技术(如负载均衡、安全控制等)进行集成...
在"Spring MVC Hessian Maven简单实例"中,我们将探讨如何将这三个技术结合在一起,以实现一个远程服务调用的解决方案。 首先,我们需要创建一个Maven项目,配置pom.xml文件来管理Spring MVC、Hessian和其它相关...
现在,让我们通过一个简单的Java示例来了解如何使用Hessian。在这个例子中,我们将创建一个服务器端服务并暴露一个方法,然后在客户端调用这个远程方法。 1. 首先,我们需要在服务器端定义一个服务接口和实现类。...
Hessian是由Caucho Technology开发的一种二进制RPC(Remote Procedure Call)协议,它允许Java对象以高效的二进制格式在网络间进行传输,使得远程调用如同本地调用一样简单。在这个工程实例中,我们将探讨如何在...
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...
这里我们提供了一个使用Hessian 4.0.37的简单实例,包括服务器端和客户端的创建。 #### 服务器端(Server) 首先,定义一个服务接口和其实现: ```java public interface HelloWorldService { String sayHello...
在这个简单的demo中,我们将探讨Hessian的核心概念,以及如何在实际应用中使用它。 首先,我们需要理解什么是数据序列化。数据序列化是将对象的状态转化为可存储或传输的形式的过程。在Hessian中,这个过程使得Java...
Hessian提供了一种简单、快速的方式将Java对象序列化为字节流,然后在服务端和客户端之间进行传输。这种方式比XML或JSON等文本格式更加高效,因为它的数据体积小,解析速度快。 ### Hessian的基本原理 Hessian协议...
总结一下,Hessian入门小例子通过创建一个简单的Hessian服务和客户端,展示了如何利用Hessian协议进行远程调用。通过这个例子,开发者可以学习如何在Java项目中集成Hessian,提升服务间的通信效率,同时减少网络开销...
Hessian的目标是提供一种快速、简单的方式来进行跨网络的对象方法调用,使得分布式系统开发更为便捷。在这个“Hessian实例”中,我们可以找到Hessian在实际应用中的具体示例和相关库文件。 标题提及的“Hessian实例...
在Hessian的例子中,我们通常会看到以下关键知识点: 1. **序列化与反序列化**:Hessian协议能够将Java对象序列化为二进制格式,然后在网络上传输,到达目的地后进行反序列化恢复成原来的对象。这种方式相比XML或...
以下是一个简单的例子: ```csharp // 服务端接口 [ServiceContract] public interface IMyService { [OperationContract] string HelloWorld(); } // 服务端实现 public class MyServiceImpl : IMyService { ...
这个“hessian通讯的安卓实现的简单DEMO”是一个示例项目,用于展示如何在Android平台上利用Hessian进行通信。下面将详细介绍Hessian在Android中的应用以及相关知识点。 1. **Hessian协议**:Hessian由Caucho公司...
在这个实例中,我们学习了如何利用Spring的自动装配和Hessian的高效通讯能力,实现了一个简单的Web Service。这种方式适用于需要快速、轻量级交互的场景,特别适合于内部服务之间的通信,或者对性能有较高要求的应用...
在例子中,通过`factory.create(IHessian.class, url)`创建了`IHessian`接口的代理实例,并将服务URL传入。 - `HessianTest`的`main`方法展示了如何使用代理调用远程服务。`url`的格式是`...
在Spring中集成Hessian,可以方便地实现服务的发布和消费,使得系统间的通信变得更加简单。 1. **配置Hessian服务端** - 首先,我们需要创建一个服务接口和服务实现类。 - 在Spring的配置文件中,使用`<bean>`...