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();?
?