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;

	@Override
	public String sayHello() {
		return "hello";
	}

}

 

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

 <bean id="hello" class="com.test.hessian.service.impl.HelloImpl"/>
    <!--  使用HessianServiceExporter 将普通bean导出成Hessian服务-->
    <bean name="/HessianRemoting" class="org.springframework.remoting.caucho.HessianServiceExporter">
           <!--  需要导出的目标bean-->
           <property name="service" ref="hello"/>
           <!--  Hessian服务的接口-->
           <property name="serviceInterface" value="com.test.hessian.service.Hello"/>
</bean> 

 

5.配置客户端连接服务

<bean id="myServiceClient" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl">
<!-- 路径格式为http://服务器ip地址/工程名/web.xml配置的url-pattern/服务端配置的hessian服务name -->
<value>http://127.0.0.1:8080/xxx/remoting/HessianRemoting</value>
</property>
<property name="serviceInterface">
<value>com.test.hessian.service.Hello</value>
</property>
</bean> 

 

6.web.xml

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

 

 

你可能感兴趣的:(hessian)