简介:
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文本)的优点。
下载地址:http://hessian.caucho.com/#Java
一.简单示例
1.服务端:
(1)下载相关jar报并添加到工程中
(2)编写接口,例子:
package com.youyuan.service; /** * @author 张海涛 * @Date 2014年6月18日 下午5:05:51 * */ public interface HessianUserService { public String getUserName(int userID); }
(3)编写业务类,继承HessianServlet 并实现上诉接口HessianUserService
package com.youyuan.service.impl; import com.caucho.hessian.server.HessianServlet; import com.youyuan.service.HessianUserService; /** * @author 张海涛 * @Date 2014年6月18日 下午5:13:52 * */ public class UserServiceImpl extends HessianServlet implements HessianUserService{ @Override public String getUserName(int userID) { System.out.println("this is UserService "); return "test"+userID; } }
(4)在web.xml中配置相关servlet
<servlet> <servlet-name>userService</servlet-name> <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> <init-param> <param-name>service-class</param-name> <param-value>com.youyuan.service.impl.UserServiceImpl</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>userService</servlet-name> <url-pattern>/youyuan/user_service</url-pattern> </servlet-mapping>
(5)测试
访问:http://localhost:8080/test-hessian-server/youyuan/user_service
出现如下页面,即表示成功:
2.客户端
(1)将服务端service打包,只打包接口即可,引入工程
(2)将hessian相关jar包引入工程
(3)编写一个简单测试类
package com.youyuan.test.hessian; import java.net.MalformedURLException; import com.caucho.hessian.client.HessianProxyFactory; import com.youyuan.service.HessianUserService; /** * @author 张海涛 * @Date 2014年6月18日 下午5:41:02 * */ public class TestHessian { public static void main(String[] args) { HessianProxyFactory factory = new HessianProxyFactory(); try { HessianUserService userService = (HessianUserService) factory.create(HessianUserService.class,"http://localhost:8080/test-hessian-server/youyuan/user_service"); System.out.println(userService.getUserName(99)); } catch (MalformedURLException e) { e.printStackTrace(); } } }
运行成功!
二.与resin整合
参考:http://caucho.com/resin-3.1/examples/hessian-ioc/index.xtp
1.下载安装resin,参考: http://haiziwoainixx.iteye.com/blog/2082298
2.配置
(1)服务器端(使用resin,会自动加载该配置文件)
将实现类中的extends HessianServlet代码去掉,同时在WEB-INF下配置resin-web.xml
<web-app xmlns="http://caucho.com/ns/resin"> <servlet> <servlet-name>userService</servlet-name> <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> <init-param> <param-name>home-class</param-name> <param-value>com.youyuan.service.impl.HessianUserServiceImpl</param-value> </init-param> <init-param> <param-name>home-api</param-name> <param-value>com.youyuan.service.HessianUserService</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>userService</servlet-name> <url-pattern>/hessian/user_service</url-pattern> </servlet-mapping> </web-app>
(2)客户端(使用resin)
同样在WEB-INF下配置resin-web.xml,单并无特别之处,不建议使用
三.与spring整合
1.服务器端
(1)在web.xml中加入以下代码
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <!-- 使用spring的DispatcherServlet代理hessian接口 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/hessian/*</url-pattern> </servlet-mapping>
(2)在spring配置文件中引入以下bean
<!-- 实际业务处理类 --> <bean id="localHessianUserServiceImpl" class="com.youyuan.test.hessian.LocalHessianUserServiceImpl"/> <bean name="/local_user" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="localHessianUserServiceImpl"/> <property name="serviceInterface" value="com.youyuan.test.hessian.LocalHessianUserService" /> </bean>以上配置完成后,该接口的调用路径为:http://localhost:8080/demo/hessian/local_user
相关推荐
NULL 博文链接:https://zhuchengzzcc.iteye.com/blog/1534311
该案例有hessian java python,该案例有hessian java python,该案例有hessian java python
Hessian多个版本下载,包括Hessian3.1.6,Hessian3.2.1,Hessian4.0.7
基于Hessian的冠状动脉血管造影分割方法
hessian资料3hessian资料3hessian资料3hessian资料3hessian资料3
hessian源码
dubbo-hessian协议http请求demo
多尺度hessian滤波器,图像增强,参考frangi的论文
赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...
hessian是一个轻量级的Java Remoting方案
赠送jar包:hessian-3.3.6.jar; 赠送原API文档:hessian-3.3.6-javadoc.jar; 赠送源代码:hessian-3.3.6-sources.jar; 赠送Maven依赖信息文件:hessian-3.3.6.pom; 包含翻译后的API文档:hessian-3.3.6-javadoc-...
hessian 服务端 客户端 可运行
Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的 WebService。只是它不使用SOAP协议,但相比webservice而言更简单、快捷。这个文件可以是hessian在spring项目和web项目的简单配置
Hessian服务端 入门程序
Hessian android客户端异步请求访问包
1、开发环境:eclipse3.1 + jdk1.5; 2、样例说明: 1)spring + hessian; 2)hessian。 3、样例内容: 1)HashMap传递; 2)简单对象传递; 3)异常处理
一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。
赠送jar包:hessian-3.3.6.jar 赠送原API文档:hessian-3.3.6-javadoc.jar 赠送源代码:hessian-3.3.6-sources.jar 包含翻译后的API文档:hessian-3.3.6-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven...
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...
hessian.jarhessian.jarhessian.jarhessian.jarhessian.jarhessian.jarhessian.jar