一、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框架例子,与Spring集成。包括了server端和client端
hessian 使用实例,更简单的service
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...
NULL 博文链接:https://asia007.iteye.com/blog/2020523
提供hessian-4.0.37.jar下载,及服务器端与客户端通信的实例
webservice技术,基于spring+hessian框架开发的简单实例
基于WebService的Hessian例子,有代码,可以直接跑起来,一针见血的例子,相当 简单,有服务器端与客户端两个例子,相当好理解
项目分为两部分,服务端(java开发)与客户端(android)是以hessian与android简单实例,开发平台是myeclipse
spring、hessian通过tomcat的简单环境应用源代码 里面有具体的实例程序
一个简单的例子学习hessian服务:服务端为Java,客户端为C#。 先要准备好C#和Java的第三方类库:http://hessian.caucho.com/ Hssiancharp.dll hessian-4.0.37.jar Hessian服务端(java) 打开eclipse...
一个简单实用的hessian框架的应用实例,用于实现分布式开发远程调用!
下面通过一个简单的例子学习hessian服务:服务端为Java,客户端为C#。 先要准备好C#和Java的第三方类库,下载地址:http://hessian.caucho.com/ 下载 Hssiancharp.dll及hessian-4.0.37.jar Hessian服务端(java): ...
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。 本例是个完整的小项目,有服务器端、有客户端,下载解压即可运行看效果。
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Spring 2.5 jar 所有开发包及完整文档及项目开发实例 spring jar 包详解spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下...