`
coach
  • 浏览: 387055 次
  • 性别: Icon_minigender_2
  • 来自: 印度
社区版块
存档分类
最新评论

Spring Hessian

阅读更多
简介
相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议(Binary),因为采用的是二进制协议,所以它很适合于发送二进制数据。Hessian通常通过Web应用来提供服务,因此非常类似于WebService。只是它不使用SOAP协议。
Hessian通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个servlet基类, 用来处理发送的请求,而Hessian的这个远程过程调用,完全使用动态代理来实现的,,推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。
Hessian处理过程示意图:
客户端——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果
环境搭建
Hessian的下载和安装请按如下步骤进行:
(1)登http://www.caucho.com/hessian/下载Hessian。
(2)把Hessian相应的Jar包放到Web应用下,所有的jar文件都应该放在WEB-INF/lib下,该文件也不例外。
两种方式
纯Hessian
这种方式主要是适用于工程中没有适用像spring框架的情况下,好处是配置方便,但是当内容多的情况下,配置的内容很多。
下面我就把我在做实例的一些相关步骤描述如下:
1:把Hessian相应jar包放入至工程中。
2:由于Hessian是采用面向接口编程的,所以编写一个接口,因为客户端仅仅需要接口,而无须真实的实现类。
package jzh.demo; 
public interface IHello { 
String sayHello(); 
} 


3:编写一个类实现这个接口。
import jzh.demo.IHello; 
import com.caucho.hessian.server.HessianServlet; 
public class Hello extends HessianServlet implements IHello { 
public String sayHello() { 
return "Hello world"; 
} 
} 

4:web.xml的详细配置
<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>jzh.demo.imple.Hello</param-value> 
</init-param> 
<init-param> 
<param-name>home-api</param-name> 
<param-value>jzh.demo.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> 

5:客户端远程调用服务器端提供的接口,利用的就是Hessian的HessianProxyFactory,来实现远程代理。
1) 把服务器端的生成的jar包,放入工程中。
2) 相应的片段程序如下:
String url = "http://220.114.108.185:8080/Hessian/Hello"; 
HessianProxyFactory factory = new HessianProxyFactory(); 
try { 
IHello hello =(IHello)factory.create(IHello.class,url); 
System.out.println(hello.sayHello()); 
} catch (MalformedURLException e) { 
e.printStackTrace(); 
} 


6:功能完成。
Hessian与Spring整合
相比上一种方式,这个方式就有点麻烦了。Hessian通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务,web.xml只是定义了“请求转发器”,该转发器将匹配/remoting/*的请求截获,转发给context的bean处理。而HessianServiceExporter提供bean服务。
所以Hessian与Spring整合主要就是一下两个工作:
1:通过DispatcherServlet来拦截URL请求。
2:HessianServiceExporter提供bean服务,Spring使用HessianServiceExporter,将一个常规bean导出成Hessian服务。
下面我就把我在做实例的一些相关步骤描述如下:
1:和上面的一样。
2:和上面的一样。
3:和上面的一样。
4:web.xml的详细配置
<servlet> 
           <servlet-name>remoting</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
           <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
           <servlet-name>remoting</servlet-name> 
           <url-pattern>/remoting/*</url-pattern> 
</servlet-mapping> 

5:配置remoting-servlet.xml文件
<!--  定义普通bean实例--> 
    <bean id="hello" class="jzh.demospring.impl.Hello"/> 
    <!--  使用HessianServiceExporter 将普通bean导出成Hessian服务--> 
    <bean name="/HessianRemoting" class="org.springframework.remoting.caucho.HessianServiceExporter"> 
           <!--  需要导出的目标bean--> 
           <property name="service" ref="hello"/> 
           <!--  Hessian服务的接口--> 
           <property name="serviceInterface" value="jzh.demospring.IHello"/> 
</bean> 

6:客户端定义一个remoting-client.xml文件
<bean id="myServiceClient" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> 
<property name="serviceUrl"> 
<value>http://220.114.99.62:8080/HessianSpring/remoteing/HessianRemoting</value> 
</property> 
<property name="serviceInterface"> 
<value>jzh.demospring.IHello</value> 
</property> 
</bean>


7:客户端调用。
try 
{                                                               
ApplicationContext context = new ClassPathXmlApplicationContext("remote-client.xml"); 

IHello hello =(IHello)context.getBean("myServiceClient"); 

System.out.println(hello.sayHello()); 
} 
catch (Exception e) 
{ 
e.printStackTrace(); 
} 

注意事项
1:启动tomcat的时候,出现如下问题:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet。,而在工程中是可以找到相应的jar文件,这究竟是什么问题。
解决方法:可能是在工程的WEB-INF/lib下面没有加载相应的jar文件
2:org.springframework.remoting.RemoteAccessException: Cannot access Hessian service at [http://61.152.162.173/remote/remoteService];
解决方法:出现这个异常一般是因为服务端操作出现异常引起的
分享到:
评论

相关推荐

    spring hessian的使用

    在Spring框架中,Hessian服务可以被方便地集成,使得分布式应用的开发变得更加简单。 在Spring中使用Hessian主要涉及以下几个关键点: 1. **服务端配置**: - 首先,你需要创建一个服务接口和服务实现类。例如,...

    Hessian的Spring配置

    在Spring框架中,Hessian是一种轻量级的远程方法调用(RPC)协议,它能够实现Java对象到字节流的序列化,从而使得服务端的对象可以在客户端直接调用,仿佛对象就在本地一样。Hessian提供了高效的二进制RPC协议,使得...

    Hessian与Spring整合需要jar包

    在Java开发中,Hessian和Spring是两个非常重要的框架,它们各自在不同的领域发挥着关键作用。Hessian是一种轻量级的远程方法调用(RPC)协议,它基于HTTP协议,能够有效地传输二进制数据,提高网络通信效率。而...

    hessian与spring整合的jar包

    当我们将Hessian与Spring进行整合时,主要目标是利用Spring的依赖注入(Dependency Injection, DI)和组件管理能力来简化Hessian服务的创建和管理。以下是一些关键知识点: 1. **Spring核心模块**(spring-core-...

    Spring配置hessian远程服务

    使用eclipse maven工程搭建hessian远程服务demo 分服务端的整合和客户端 建议阅读相关博客http://blog.csdn.net/heisemuyangquan/article/details/79460528

    Spring集成Hessian案例

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Hessian则是一种高效的RPC(远程过程调用)协议,它允许服务提供者和消费者之间进行二进制远程方法调用。本案例主要关注如何将Spring与Hessian进行...

    spring 集成 hessian例子

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

    hessian 基于spring的注解支持的maven工程(2016/07/05版)

    引入该工程,在接口上添加@hessianService注解,在client定义url,在client端的xml里面配置hessianClientBuilder,在server里面配置hessianServerBuilder,并实例化接口。在client端里面使用接口并注入即可。

    Spring中集成Hessian的问题

    在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...

    spring aop hessian 基础demo 部署即可运行

    Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...

    hessian php与java通讯demo源码

    Hessian是一种二进制协议,它允许在不同的编程语言之间进行高效的远程方法调用(RPC)。这个"PHP与Java通信Demo源码"是基于Hessian协议实现的一个示例,展示了如何在PHP和Java之间建立通信。现在,我们将深入探讨...

    Spring + Hessian + Spring MVC(包括Server和Client).zip

    1.名称:Spring + Hessian + Spring MVC(包括Server和Client).zip 2.来源:自己实现 3.备注:项目有两个系统,包括Server端和Client端,项目已经跑通,可以实现。 4.注意:client中pom.xml里最后的一个jar包,需要...

    基于spring+hessian框架的webservice实例

    本实例重点探讨的是基于Spring框架和Hessian协议的Web Service实现,这是一种轻量级、高效的远程调用解决方案。 首先,我们要理解Spring框架。Spring是Java领域的一个核心框架,它提供了全面的编程和配置模型,用于...

    spring整合hessian进行远程通讯

    标题中的“spring整合hessian进行远程通讯”是指在Spring框架中使用Hessian库来实现远程过程调用(RPC)。这是一个常见的技术组合,用于构建分布式系统,使得应用组件之间可以跨网络进行高效通信。 Hessian是一种二...

    在 Spring Web Flow 项目中应用 Hessian 服务

    在Spring Web Flow项目中应用Hessian服务,是一个深入整合分布式服务和前端流程管理的重要实践。Spring Web Flow(SWF)是一个强大的MVC框架,用于构建具有复杂导航逻辑的Web应用程序,而Hessian则是一种轻量级的二...

    Hessian和Spring集成示例

    在IT行业中,Hessian和Spring的集成是服务端开发中常用的一种技术,它允许我们将Java对象作为远程服务进行调用,极大地提高了开发效率和系统的可扩展性。下面将详细讲解Hessian与Spring集成的关键知识点。 首先,...

    struts2+ibatis+spring+Hessian 整合项目

    struts2+ibatis+spring+Hessian 整合项目 web项目整合,服务端用hessian协议远程调用服务端的方法,hessian是用spring代理整合,struts2+ibatis+spring的整合项目,用作学习和开发基础平台构建很有用处,工程导入...

    Spring hession Service Test项目

    **Spring Hessian Service Test项目详解** 在Java开发中,Spring框架是广泛应用的轻量级容器,而Hessian是一种高效的远程方法调用(RPC)协议,它使得服务端的方法可以直接在客户端调用,仿佛它们就在同一台机器上...

    spring mvc hessian maven简单实例

    在"Spring MVC Hessian Maven简单实例"中,我们将探讨如何将这三个技术结合在一起,以实现一个远程服务调用的解决方案。 首先,我们需要创建一个Maven项目,配置pom.xml文件来管理Spring MVC、Hessian和其它相关...

    Hessian与spring整合

    当我们谈论“Hessian与Spring整合”时,通常是指将Hessian作为服务通信的机制,结合Spring框架来构建分布式服务系统。这种整合有以下几个关键点: 1. **服务提供者(Service Provider)**:首先,我们需要在服务端...

Global site tag (gtag.js) - Google Analytics