`

Spring 的 Hessian 简单使用

阅读更多

一、 服务器端配置

<? xml version = "1.0" encoding = "UTF-8" ?>

< web-app version = "2.4"

    xmlns = "http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

    < servlet >

       < servlet-name > remote </ servlet-name >         < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >

       < load-on-startup > 1 </ load-on-startup >

    </ servlet >

    < servlet-mapping >

        < servlet-name > remote </ servlet-name >

        < url-pattern > /remote/* </ url-pattern >

    </ servlet-mapping >

 

  < welcome-file-list >

    < welcome-file > index.jsp </ welcome-file >

  </ welcome-file-list >

</ web-app >

 

配置好 Servlet  servlet mapping DispatcherServlet

然后再在 WEB-INF 创建 Spring 初始化 HessianService 配置,如下:

该文件名一定是: 那个 servlet + -servlet.xml 这里我们创建 ”remote-servlet.xml” 文件,内容如下:

 

<? xml version = "1.0" encoding = "GBK" ?>

< beans xmlns = "http://www.springframework.org/schema/beans"

       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

       xmlns:aop = "http://www.springframework.org/schema/aop"

       xmlns:tx = "http://www.springframework.org/schema/tx"

       xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" >

 

    < bean id = "timeService" class = "com.sosee.TimeServiceImpl" />

   

    < bean name = "/HessianService" class = "org.springframework.remoting.caucho.HessianServiceExporter" >

      < property name = "service" ref = "timeService" />

      < property name = "serviceInterface" value = "com.sosee.TimeService" />

    </ bean >   

</ beans >

2. 创建接口和实现类

接口

com.sosee.TimeService

package com.sosee;

public interface TimeService{

    String getTime();

}

实现类:

package com.sosee;

import java.text.SimpleDateFormat;

import java.util.Date;

public class TimeServiceImpl implements TimeService {

    public String getTime() {

        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

    }

}

 

       OK, 以上将服务器端的所有准备工作都搞定了,接下来就是客户端如何调用了。

二、 客户端 Spring 配置以及代码调用

1.        配置 Spring 容器

<? xml version = "1.0" encoding = "GBK" ?>

< beans xmlns = "http://www.springframework.org/schema/beans"

       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

       xmlns:aop = "http://www.springframework.org/schema/aop"

       xmlns:tx = "http://www.springframework.org/schema/tx"

       xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" >

      

    < bean name = "hessianService" class = "org.springframework.remoting.caucho.HessianProxyFactoryBean" >

      < property name = "serviceUrl" value = "http://localhost:8080/call/remote/HessianService" />

      < property name = "serviceInterface" value = "com.sosee.TimeService" />

</ bean ></ beans >

 

2.        调用代码:

 

package com.sosee;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args){

       ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml" );

       TimeService service = (TimeService)context.getBean( "hessianService" );

       System. out .println( "get systime:" +service.getTime());   }

}

 

OK ,测试成功 .

有可能你初次做这个测试的时候,有出现以下的异常情况:

Exception in thread "main" org.springframework.remoting.RemoteAccessException : Cannot access Hessian remote service at [http://localhost:8080/call2/remote/HessianService]; nested exception is com.caucho.hessian.io.HessianProtocolException : 400: java.io.IOException : Server returned HTTP response code: 400 for URL: http://localhost:8080/call2/remote/HessianService

    at org.springframework.remoting.caucho.HessianClientInterceptor.convertHessianAccessException( HessianClientInterceptor.java:254 )

    at org.springframework.remoting.caucho.HessianClientInterceptor.invoke( HessianClientInterceptor.java:225 )

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171 )

    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( JdkDynamicAopProxy.java:204 )

    at $Proxy1.getTime(Unknown Source)

    at com.sosee.Main.main( Main.java:14 )

Caused by: com.caucho.hessian.io.HessianProtocolException : 400: java.io.IOException : Server returned HTTP response code: 400 for URL: http://localhost:8080/call2/remote/HessianService

    at com.caucho.hessian.client.HessianProxy.invoke( HessianProxy.java:185 )

 

 

这种异常一般都是由于 Spring 配置文件中

      < property name = "serviceUrl" value = "http://localhost:8080/call/remote/HessianService" />

( 我这里配置的 call  webroot 的名称 , 你如果直接放到服务器的根目录,就不需要这个了。 )

出现的问题,一定把 URL 写正确就 OK 了!

另外需要注意的就是 spring.jar 的版本问题了, Srping 版本更新较快,我这个用的 2.0.7 版本。

分享到:
评论

相关推荐

    spring hessian的使用

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

    Hessian的Spring配置

    通过上述配置,我们可以实现Spring中基于Hessian的RPC通信,使得服务间的调用变得高效且简单。`HelloHessianService`和`HelloHessianClient`可能分别代表服务提供方和服务消费方的代码实现,它们是整个Hessian通信的...

    spring 集成 hessian例子

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

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

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

    使用hessian简单使用【续】- 与spring结合使用

    本篇文章将探讨如何在Spring框架中集成并使用Hessian,以便更好地理解和应用这一技术。 一、Hessian简介 Hessian是由Caucho公司开发的一种基于HTTP的二进制RPC(Remote Procedure Call)协议,它以简洁的二进制格式...

    spring mvc hessian maven简单实例

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

    一个简单的Hessian示例

    一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。

    基于spring+hessian框架的webservice实例

    在这个实例中,我们学习了如何利用Spring的自动装配和Hessian的高效通讯能力,实现了一个简单的Web Service。这种方式适用于需要快速、轻量级交互的场景,特别适合于内部服务之间的通信,或者对性能有较高要求的应用...

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

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

    外部接口调用 使用spring4+hessian4实例

    标题 "外部接口调用 使用spring4+hessian4实例" 提供了一个关于如何使用Spring4框架与Hessian4库实现远程服务调用的具体实践。在这个场景中,Hessian4被用作一个轻量级的RPC(远程过程调用)协议,它允许应用程序在...

    spring springmvc hessian rpc客户端及服务端示例demo

    以上就是Spring、SpringMVC与Hessian RPC结合的简单示例。通过这个例子,我们可以了解到如何在Spring中配置Hessian服务,并在客户端进行调用。这对于初学者来说是一个很好的起点,可以深入理解分布式系统的通信机制...

    Hessian 使用小结

    4. **客户端调用**:客户端可以选择与Spring集成,通过Spring的`ApplicationContext`获取代理对象,或者直接使用Hessian工具生成代理。 **安全机制** Hessian提供了基于X.509证书的加密和签名机制,这包括`X509...

    Hessian的使用配置步骤

    远程方法调用的比较,Hessian方法的介绍和相关配置.Hessian是一个轻量级的remoting on http工具,采用的是Binary RPC协议,所以它很适合于发送二进制数据,同时...这个文件可以是hessian在spring项目和web项目的简单配置

    OSGI+SpringDM+Hessian

    结合这三个技术,我们可以创建一个高度模块化的、动态的Java应用,其中各个组件(即OSGI bundle)可以通过SpringDM管理并使用Hessian进行高效通信。例如,一个bundle可以提供Hessian服务,其他bundle则可以作为...

    外部接口调用 使用spring4+hessian4实例(二)

    在本文中,我们将深入探讨如何使用Spring4框架与Hessian4库进行远程服务调用,即所谓的外部接口调用。这种技术允许不同应用程序之间通过网络高效地交换数据和执行服务,尤其是在分布式系统中非常常见。 首先,让...

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

    Spring框架为了提供远程服务调用的支持,将其集成到自己的服务中,使得开发者能够利用Hessian的特性来实现高效、轻量级的服务间通信。本文将深入探讨Hessian在Spring中的应用以及相关研究。 一、Hessian简介 ...

Global site tag (gtag.js) - Google Analytics