您的位置:首页 > 编程语言 > Java开发

Spring集成Hessian

2014-06-09 17:26 465 查看
1,Hessian简单介绍:

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

2,RMI、Hessian、Burlap、Httpinvoker、WebService,通讯协议的在不同的数据结构和不同数据量时的传输性能比较:

      RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。

      Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。

      Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。

     Web service是连接异构系统或异构语言的首选协议,它使用SOAP形式通讯,可以用于任何语言,目前的许多开发工具对其的支持也很好。

     测试结果显示,几种协议的通讯效率依次为:

      RMI > Httpinvoker >= Hessian >> Burlap >> web service

      RMI不愧是JAVA的首选远程调用协议,非常高效稳定,特别是在大数据量的情况下,与其他通讯协议的差距尤为明显。

      HttpInvoker使用java的序列化技术传输对象,与RMI在本质上是一致的。从效率上看,两者也相差无几,HttpInvoker与RMI的传输时间基本持平。

      Hessian在传输少量对象时,比RMI还要快速高效,但传输数据结构复杂的对象或大量数据对象时,较RMI要慢20%左右。

      Burlap仅在传输1条数据时速度尚可,通常情况下,它的毫时是RMI的3倍。

      Web Service的效率低下是众所周知的,平均来看,Web Service的通讯毫时是RMI的10倍。

3,Hessian和Spring的集成示例:

      到官网下载Hessian相关资源包:http://hessian.caucho.com/   (注:刚网站可能需要GoAgent来翻墙下载)

       点击java到下载页面:

      


将下载下来的hessian-3.1.6和Spring的jar包放到开发工具lib目录下(本人使用eclipse开发工具)

如下图:

       


上面坏境搭建好后,下面我们来开始正式进行集成

a) 写需要暴露的Service接口(Hello.java):

package com.jasun.service;

public interface Hello {
public String sayHello(String name);
}
b) 写Service实现类(HelloService.java):
package com.jasun.serviceImp;

import com.jasun.service.Hello;

public class HelloService implements Hello {

@Override
public String sayHello(String name) {
return "Hello" + name + "!";
}

}
c) 编写Hessian的配置文件(hessian-service.xml),可以看到该处主要是Spring的Bean注入:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="helloService" class="com.jasun.serviceImp.HelloService"/>
<bean name="/hello" class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref="helloService"/>
<property name="serviceInterface" value="com.jasun.service.Hello"/>
</bean>
</beans>
注:将该文件放置到WEB-INF目录下即可。

d) 配置Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/hessian-servlet.xml</param-value>
</context-param>
<servlet>
<servlet-name>hessian</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>hessian</servlet-name>
<url-pattern>/hessian/*</url-pattern>
</servlet-mapping>
</web-app>


e) 编写测试类(Client.java)

package com.jasun.test;

import java.net.MalformedURLException;

import com.caucho.hessian.client.HessianProxyFactory;
import com.jasun.service.Hello;

public class Client {
public static void main(String[] args) throws MalformedURLException {
String url = "http://localhost:8080/hession_1/hessian/hello";
HessianProxyFactory factory = new HessianProxyFactory();
Hello hello = (Hello) factory.create(Hello.class, url);
System.out.println(hello);
System.out.println(hello.sayHello("Hessian"));
}
}


f) 测试:

      将该web工程部署在tomcat上,启动tomcat,然后运行测试类

出现如下结果,则说明集成Hessian成功!



当然,也可以在浏览器中访问Hessian暴露的Hessian Url,如下:



出现405则说明Hessian暴露成功!即完成了Spring和Hessaian的集成!,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring Hessian