读书人

spring与hessian的应用

发布时间: 2013-03-21 10:08:17 作者: rapoo

spring与hessian的使用

一、简介

在平时开发中,我们经常会使用到远程访问技术,而spring为各种远程访问技术的集合提供了整合类,使得实现这个技术变得相当简单。目前spring支持以下几种远程访问技术:

1、远程方法调用(RMI)

2、spring的http调用器

3、hessian

4、burlap

?

其中hessian采用基于http的二进制远程协议,比webservice简单,官网:http://www.caucho.com/hessian

Hessian 通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet 可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个 servlet基类, 用来处理发送的请求,而Hessian的这个远程过程调用,完全使用动态代理来实现的,,推荐采用面向接口编程,因此,Hessian服务建议通过接口暴 露。
Hessian处理过程示意图:
客户端——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果

?

?

二、使用

1.导入相应的包(大致见图片附件):

?

2.编写一个简单的接口

package com.test.hessian.service;public interface Hello {public String sayHello();}

?

3.实现这个接口

package com.test.hessian.service.impl;import com.caucho.hessian.server.HessianServlet;import com.test.hessian.service.Hello;public class HelloImpl extends HessianServlet implements Hello {private static final long serialVersionUID = 5101571562928514433L;@Overridepublic String sayHello() {return "hello";}}

?

4.服务器端暴露接口,编写remoting-servlet.xml(默认保存在WEB-INF下)

 <bean id="hello" ref="hello"/>           <!--  Hessian服务的接口-->           <property name="serviceInterface" value="com.test.hessian.service.Hello"/></bean> 

?

5.配置客户端连接服务

<bean id="myServiceClient" name="code"><context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath*:spring-*.xml</param-value>  </context-param>  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>   <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> </web-app>

?

7.客户端调用

?

ApplicationContext context = new ClassPathXmlApplicationContext("remoting-client.xml"); Hello hello=(Hello) context.getBean("myServiceClient");hello.sayHello();

?

?

读书人网 >软件架构设计

热点推荐