Hessian入门相关

来源:互联网 发布:vscode如何打开网页 编辑:程序博客网 时间:2024/06/08 18:50

各个通讯协议对比:

       通讯效率测试结果:

              RMI > Httpinvoker >=Hessian >> Burlap >> Web service

      1.RMI 是 Java 首选远程调用协议,非常高效稳定,特别是在数据结构复杂,数据量大的情况下,与其他通讯协议的差距尤为明显。但不能跨语言JDK内置

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

       3.Hessian 在传输少量对象时,比 RMI 还要快速高效,但传输数据结构复杂的对象或大量数据对象时,较 RMI 要慢 20% 左右。但这只是在数据量特别大,数据结构很复杂的情况下才能体现出来,中等或少量数据时, Hessian并不比RMI慢。 Hessian 的好处是精简高效,可以跨语言使用,而且协议规范公开,我们可以针对任意语言开发对其协议的实现。另外, Hessian与WEB服务器结合非常好,借助WEB服务器的成熟功能,在处理大量用户并发访问时会有很大优势,在资源分配,线程排队,异常处理等方面都可以由成熟的WEB服务器保证。而 RMI 本身并不提供多线程的服务器。而且,RMI 需要开防火墙端口, Hessian 不用。 (传输二进制数据,将对象转换成二进制数据跨语言

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

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

阿里巴巴 框架 ,Dubbo 框架, 基于Hessian 封装的 !





Hessian与Spring的集成(服务端)

  1. Hessian的jar包下载
  2. web.xml配置
  3. <servlet>    <servlet-name>hessian</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <load-on-startup>1</load-on-startup></servlet><servlet-mapping>        <servlet-name>hessian</servlet-name>        <url-pattern>/remote/*</url-pattern></servlet-mapping>

  4. 注意看我们的HessianServiceExporter对应的bean的name是“/HelloNewsService”,在SpringMVC的配置文件中,当一个bean的name是以“/”开始的时候Spring会自动对它进行BeanNameUrlHandlerMapping。所以这里相当于是我们把“/HelloNewsService”映射到了HessianServiceExporter,根据上面的配置我们要请求这个远程服务的时候应该请求“/remote/HelloNewsService”。虽然说在Spring的配置文件中我们把bean的名称设为以“/”开始时Spring会自动对它进行一个beanName映射,但有一次不知道是哪里影响了,我这样使用的时候Spring没有对它进行自动映射,所以为了保险起见,这里我们最好自己指定一个BeanNameUrlHandlerMapping,代码如下所示:
  5. 复制hessian-servlet.xml到WEB-INF下 <beans xmlns="http://www.springframework.org/schema/beans"        xmlns:context="http://www.springframework.org/schema/context"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">        <!-- Remoting -->        <!--         <bean name="/HelloNewsService" class="org.springframework.remoting.caucho.HessianServiceExporter">        这里是实现类的名称                <property name="service" value="com.hessianServer.HelloServiceImpl"/>        这里是接口                <property name="serviceInterface" value="com.hessianServer.HelloService" />        </bean>         --></beans>


Hessian与Spring的集成(客户端)
<!-- Hessian --><bean id="helloService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"><!-- serviceUrl 远程服务地址  --><property name="serviceUrl" value="http://localhost:8080/hessianServer/<span style="font-family: Simsun;font-size:14px;">remote/</span><span style="font-family: Simsun;font-size:14px;"></span><span style="font-family: Simsun;font-size:14px;">HelloNewsService</span>"/><!-- serviceInterface 服务接口 --><property name="serviceInterface" value="<span class="com">com.hessianServer.<span style="font-family: Simsun;font-size:14px;">HelloNewsService</span><span style="font-family: Arial, Helvetica, sans-serif;"></bean></span>
客户端直接调用 helloService方法即可

附一个参考地址
http://www.tuicool.com/articles/iuUbmi

0 0