原来作的一个项目因为页面跳转比较多,应用了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/
例子源代码见附件
分享到:
相关推荐
2. **配置Hessian布署器:** 在Spring的配置文件中,定义一个HessianServiceExporter或HessianServlet,它们会将你的服务暴露为Hessian服务。例如: ```xml <bean id="hessianServiceExporter" class="org.spring...
1. **配置Spring**:在Spring的配置文件中定义Hessian服务的bean,通过`<bean>`标签声明服务接口和其实现类,使用`hessian-proxy-factory-bean`来创建Hessian服务的代理。 2. **暴露Hessian服务**:通过Spring的`...
在Spring框架中,Hessian是一种轻量级的远程方法调用(RPC)协议,它能够实现Java对象到字节流的序列化,从而使得服务端的对象可以在客户端直接调用,仿佛对象就在本地一样。Hessian提供了高效的二进制RPC协议,使得...
2. 在Spring配置文件中声明Hessian服务bean,并指定其接口和实现。 3. 使用`HessianProxyFactoryBean`或`HessianServiceExporter`来暴露Hessian服务。 4. 在客户端,通过Spring的`HessianClientInterceptor`或者直接...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Hessian则是一种高效的RPC(远程过程调用)协议,它允许服务提供者和消费者之间进行二进制远程方法调用。本案例主要关注如何将Spring与Hessian进行...
7. **安全考虑**:在实际应用中,我们需要对Hessian服务进行安全控制,如添加身份验证、授权和加密机制。Spring Security可以与Hessian整合,提供安全的远程服务访问。 8. **测试与监控**:为了确保服务的稳定性和...
在IT行业中,Hessian和Spring的集成是服务端开发中常用的一种技术,它允许我们将Java对象作为远程服务进行调用,极大地提高了开发效率和系统的可扩展性。下面将详细讲解Hessian与Spring集成的关键知识点。 首先,...
【标题】"spring、hessian通过tomcat的简单环境应用源代码"涉及到的是在Java Web开发中使用Spring框架和Hessian服务序列化技术在Tomcat服务器上的集成与应用。Spring是一个广泛使用的开源Java应用程序框架,它提供了...
Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...
本文将深入探讨Hessian在Spring中的应用以及相关研究。 一、Hessian简介 Hessian是一种基于HTTP的二进制协议,它以简洁的二进制格式传输数据,相比于XML-RPC或JSON-RPC等文本协议,Hessian具有更高的传输效率和更快...
在Spring中整合Hessian,首先需要在Spring配置文件中定义Hessian的服务和客户端bean。 1. **Hessian服务端配置**: - 创建一个实现了特定业务接口的类,这个类是远程服务的实现。 - 在Spring配置文件中定义一个`...
在"基于spring+hessian框架的webservice实例"中,我们将看到如何结合Spring和Hessian来创建和消费Web服务。首先,我们需要创建一个服务接口和服务实现。这个接口定义了可供远程调用的方法,而实现则提供了具体的功能...
在Android应用开发中,与Web服务器进行通讯是常见的需求,Hessian是一种二进制协议,它使得Java和Java、Java和其他语言(如Python、C++)之间的远程调用变得高效且简便。本教程将深入探讨如何在Android端利用Hessian...
这个例子可能展示了如何配置Spring的ApplicationContext来定义Hessian服务,以及如何在Spring MVC应用中使用Hessian服务。这将帮助你理解如何将Hessian的服务注册到Spring容器,以及如何在Web应用中消费这些服务。 ...
Hessian是由Caucho公司开发的一种轻量级的Web服务协议,它的主要特点是使用二进制格式传输数据,相比XML或JSON,其在网络传输中具有更高的效率和更快的速度。Hessian支持Java、C++、Python等多种编程语言,能够实现...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Hessian则是一种轻量级的RPC(Remote Procedure Call)协议,它允许服务提供者通过HTTP协议向服务消费者提供二进制格式的服务调用。本篇文章将深入探讨如何将...
10. **WebService应用场景与重要性**:鉴于Web服务的标准化程度高、功能全面,它在实际应用中使用极为广泛。无论是在企业内部还是企业间进行信息交换,WebService都扮演着重要角色,特别是在要求松耦合的分布式系统...
Spring与Jetty的集成允许我们在不依赖其他Web服务器的情况下,快速启动并运行Hessian服务。 现在,我们详细分析“hessian-demo”项目结构和关键组件: 1. **服务端:** - 首先,创建一个服务接口,定义需要暴露给...
Hessian是一种二进制Web服务协议,它提供了一种高效的序列化和远程调用机制,常用于分布式系统中。在本项目中,我们探讨的是基于C#实现的Hessian服务端和客户端,已经在IIS环境下进行了测试并成功通过。 1. **...