Hessian学习(2)——整合spring

接着上一篇文章Hessian学习(1)——基本使用,学习一下hessian整合spring的使用方法;


Hessian通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个servlet基类, 用来处理发送的请求,而Hessian的这个远程过程调用,完全使用动态代理来实现的,,采用面向接口编程,因此,Hessian服务建议通过接口暴露。

现在看看如何实现:

1.同样新建一个web项目,此处为HessianServer2;

2.导入jar包到WEB-INF/lib,此处使用jar包如下:

aopalliance-1.0.jar
commons-logging-1.1.1.jar
hessian-4.0.7.jar
log4j-1.2.16.jar
org.springframework.test-3.1.0.RELEASE.jar
spring-aop-3.1.1.RELEASE.jar
spring-asm-3.1.1.RELEASE.jar
spring-beans-3.1.1.RELEASE.jar
spring-context-3.1.1.RELEASE.jar
spring-context-support-3.1.1.RELEASE.jar
spring-core-3.1.1.RELEASE.jar
spring-expression-3.1.1.RELEASE.jar
spring-tx-3.1.1.RELEASE.jar
spring-web-3.1.1.RELEASE.jar
spring-webmvc-3.1.1.RELEASE.jar
3.建好服务端代码,HelloService.java,HelloServiceImpl.java,代码详见 Hessian学习(1)——基本使用

4.配置web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>HessainServer1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
	<!-- 整合spring -->
	<servlet>  
	    <servlet-name>hessian</servlet-name>  
	    <servlet-class>  
	        org.springframework.web.servlet.DispatcherServlet  
	    </servlet-class>  
	    <load-on-startup>1</load-on-startup>  
	</servlet>  
	<servlet-mapping>  
	    <servlet-name>hessian</servlet-name>  
	    <url-pattern>/hessian/*</url-pattern>  
	</servlet-mapping>
	
</web-app>

5.在WEB-INF目录下新建hessian-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- 定义普通bean实例 -->
	<bean id="helloService" class="包名.HelloServiceImpl" />
	<!-- 使用HessianServiceExporter 将普通bean导出成Hessian服务 -->
	<bean name="/hello"
		class="org.springframework.remoting.caucho.HessianServiceExporter">
		<!-- 需要导出的目标bean -->
		<property name="service" ref="helloService" />
		<!-- Hessian服务的接口 -->
		<property name="serviceInterface" value="包名.HelloService" />
	</bean>
</beans>
6.新建一个java project,用于做客户端,此处命名为HessianClient2;

7.导入hessian所需要的jar包;

8.新建测试类,代码如下:

public class SpringHessianTest {
	@Test
	public void testSpringHessian() {
		String url = "http://localhost:28080/HessianServer2/hessian/hello";
		HessianProxyFactory factory = new HessianProxyFactory();
		HelloService service;
		try {
			service = (HelloService)factory.create(HelloService.class, url);
			System.out.println(service.helloWorld("test spring!"));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		
	}
}
9.将服务端部署到tomcat,客户端测试结果如下:



总结:

需要说明如下:

1.hessian-servlet的命名是有要求的,需要跟web.xml中的<servlet-name>的值一样,即${servlet-name}-servlet.xml;

2.web.xml中<url-pattern>决定客户端访问的url前缀为http://IP:端口/项目名/${url-pattern},此处为:

http://localhost:28080/HessianServer2/hessian/
3.hessian-servelt.xml中
<bean name="/hello"
		class="org.springframework.remoting.caucho.HessianServiceExporter">
		<!-- 需要导出的目标bean -->
		<property name="service" ref="helloService" />
		<!-- Hessian服务的接口 -->
		<property name="serviceInterface" value="com.cmsz.upay.hessian.service.HelloService" />
	</bean>
决定了我们要访问这个服务类的url为:

String url = "http://localhost:28080/HessianServer2/hessian/hello";

代码路径: csdn code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值