`
jacally
  • 浏览: 770480 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • JAVA
阅读更多
   
    原来作的一个项目因为页面跳转比较多,应用了Spring Web Flow 项目作视图的页面流转控制,关于Spring Web Flow的介绍可以参考我的另一篇文章:http://lib.iteye.com/blog/299142,最近需要在项目中引用WebService 远程服务的机制供其他系统调用,比较了一些这方面的开源项目,发现Hessian配置简单,性能优异,决定集成Hessian到这个项目中。
  
    本来Hessaion的配置是比较简单的,很多文章都有介绍,主要是在web.xml中配置Servlet,然后配置ServiceBean就可以了,这方面的文章Google一下会很多,不在这里介绍。我的项目中因为用到了Spring Web Flow,通过org.springframework.web.servlet.DispatcherServlet为 Spring Web Flow 控制器作了定义,与Hessian的servlet造成了冲突,使Hessian不能正常工作。经过研究发现需要通过Spring Web Flow的 UrlHandler 对Hessian的请求分配相应的控制器才可以正确的响应。

    以下Spring Web Flow中介绍的例子集成 Hessian 的例子:

服务端代码:
package samples.hessian;

public interface WebServiceSample {

	public String say(String hello);
	
}


package samples.hessian;

public class WebServiceSampleImpl implements WebServiceSample{

	public String say(String hello) {
		return hello + " world!";
	}

}


修改webmvc-config.xml文件,增加ServiceBean的定义,及 Hessian 对应的控制器:
<?xml version="1.0" encoding="UTF-8"?>
<beans 
  xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd"> 
  <bean 
    id="viewResolver" 
	class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView">
	</property> 
	<property name="prefix" value="/WEB-INF/jsp/">
	</property> 
	<property name="suffix" value=".jsp">
	</property> 
  </bean> 
  <bean 
    id="viewMappings" 
	class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <!-- /shopping.do 请求由 flowController 来处理 -->
    <property name="mappings"> 
	  <value> /shopping=flowController </value> 

	  <!-- hessian 测试实例 为Hessian的Url请求分配对应的处理器 -->
	  <value> /webServiceHessianSample=webServiceHessianExporter </value>

	</property> 
	<property name="defaultHandler"> 
	<!-- UrlFilenameViewController 会将 "/index" 这样的请求映射成名为 "index" 的视图 --> 
	  <bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" /> 
	</property> 
  </bean> 
  <bean 
    id="flowController" 
	class="org.springframework.webflow.mvc.servlet.FlowController"> 
	<property name="flowExecutor" ref="flowExecutor"/> 
  </bean>
  
	<!-- hessian 测试实例 ServiceBean 的定义 -->
	<bean id="webServiceHessianSample" class="samples.hessian.WebServiceSampleImpl"></bean>
	<bean name="webServiceHessianExporter"
		class="org.springframework.remoting.caucho.HessianServiceExporter">
		<property name="service" ref="webServiceHessianSample" />
		<property name="serviceInterface" value="samples.hessian.WebServiceSample" />
	</bean>	
  
</beans>


单元测试代码:
package test.sample;

import java.net.MalformedURLException;

import junit.framework.Assert;
import junit.framework.TestCase;
import cn.org.coral.sample.hessian.WebServiceSample;

import com.caucho.hessian.client.HessianProxyFactory;

public class TestHessian extends TestCase {
	
	public void testSay() throws MalformedURLException {

		String url = "http://localhost:8080/coral/spring/webServiceHessianSample";

		HessianProxyFactory factory = new HessianProxyFactory();
		WebServiceSample sample = (WebServiceSample) factory.create(
				WebServiceSample.class, url);
		
		//System.out.print(sample.say("hello"));
		Assert.assertEquals(sample.say("hello"), "hello world!");
	}
}


另外,需要注意的地方,我使用的是 hessian 版本是hessian-3.1.5.jar,使用最新的有问题,可能api发生了变化,还未仔细研究。hessian 的下载地址是:http://hessian.caucho.com/

例子源代码见附件
分享到:
评论
1 楼 corelengine 2012-07-20  
好文,支持一下!

相关推荐

    Spring中集成Hessian的问题

    2. **配置Hessian布署器:** 在Spring的配置文件中,定义一个HessianServiceExporter或HessianServlet,它们会将你的服务暴露为Hessian服务。例如: ```xml &lt;bean id="hessianServiceExporter" class="org.spring...

    Hessian与Spring整合需要jar包

    1. **配置Spring**:在Spring的配置文件中定义Hessian服务的bean,通过`&lt;bean&gt;`标签声明服务接口和其实现类,使用`hessian-proxy-factory-bean`来创建Hessian服务的代理。 2. **暴露Hessian服务**:通过Spring的`...

    Hessian的Spring配置

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

    hessian与spring整合的jar包

    2. 在Spring配置文件中声明Hessian服务bean,并指定其接口和实现。 3. 使用`HessianProxyFactoryBean`或`HessianServiceExporter`来暴露Hessian服务。 4. 在客户端,通过Spring的`HessianClientInterceptor`或者直接...

    Spring集成Hessian案例

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

    Hessian与spring整合

    7. **安全考虑**:在实际应用中,我们需要对Hessian服务进行安全控制,如添加身份验证、授权和加密机制。Spring Security可以与Hessian整合,提供安全的远程服务访问。 8. **测试与监控**:为了确保服务的稳定性和...

    Hessian和Spring集成示例

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

    spring、hessian通过tomcat的简单环境应用源代码

    【标题】"spring、hessian通过tomcat的简单环境应用源代码"涉及到的是在Java Web开发中使用Spring框架和Hessian服务序列化技术在Tomcat服务器上的集成与应用。Spring是一个广泛使用的开源Java应用程序框架,它提供了...

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

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

    Hessian(Spring集成的)的应用与研究

    本文将深入探讨Hessian在Spring中的应用以及相关研究。 一、Hessian简介 Hessian是一种基于HTTP的二进制协议,它以简洁的二进制格式传输数据,相比于XML-RPC或JSON-RPC等文本协议,Hessian具有更高的传输效率和更快...

    spring整合hessian进行远程通讯

    在Spring中整合Hessian,首先需要在Spring配置文件中定义Hessian的服务和客户端bean。 1. **Hessian服务端配置**: - 创建一个实现了特定业务接口的类,这个类是远程服务的实现。 - 在Spring配置文件中定义一个`...

    基于spring+hessian框架的webservice实例

    在"基于spring+hessian框架的webservice实例"中,我们将看到如何结合Spring和Hessian来创建和消费Web服务。首先,我们需要创建一个服务接口和服务实现。这个接口定义了可供远程调用的方法,而实现则提供了具体的功能...

    android端使用hessian跟web服务器通讯

    在Android应用开发中,与Web服务器进行通讯是常见的需求,Hessian是一种二进制协议,它使得Java和Java、Java和其他语言(如Python、C++)之间的远程调用变得高效且简便。本教程将深入探讨如何在Android端利用Hessian...

    hession例子,源码,最新的jar包,还有web例子与spring结合的例子

    这个例子可能展示了如何配置Spring的ApplicationContext来定义Hessian服务,以及如何在Spring MVC应用中使用Hessian服务。这将帮助你理解如何将Hessian的服务注册到Spring容器,以及如何在Web应用中消费这些服务。 ...

    利用hessian进行系统通信实例教程

    Hessian是由Caucho公司开发的一种轻量级的Web服务协议,它的主要特点是使用二进制格式传输数据,相比XML或JSON,其在网络传输中具有更高的效率和更快的速度。Hessian支持Java、C++、Python等多种编程语言,能够实现...

    Spring整合Hessian访问远程服务

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Hessian则是一种轻量级的RPC(Remote Procedure Call)协议,它允许服务提供者通过HTTP协议向服务消费者提供二进制格式的服务调用。本篇文章将深入探讨如何将...

    Spring应用开发实战Web Service WS

    10. **WebService应用场景与重要性**:鉴于Web服务的标准化程度高、功能全面,它在实际应用中使用极为广泛。无论是在企业内部还是企业间进行信息交换,WebService都扮演着重要角色,特别是在要求松耦合的分布式系统...

    hessian-demo示例

    Spring与Jetty的集成允许我们在不依赖其他Web服务器的情况下,快速启动并运行Hessian服务。 现在,我们详细分析“hessian-demo”项目结构和关键组件: 1. **服务端:** - 首先,创建一个服务接口,定义需要暴露给...

    hessian服务器和客户端

    Hessian是一种二进制Web服务协议,它提供了一种高效的序列化和远程调用机制,常用于分布式系统中。在本项目中,我们探讨的是基于C#实现的Hessian服务端和客户端,已经在IIS环境下进行了测试并成功通过。 1. **...

Global site tag (gtag.js) - Google Analytics