Spring的HttpInvoker

转载请出自出处:http://eksliang.iteye.com/blog/2267682

一、概述

上两篇博客《RMI远程方式调用》、《Heasian与Spring集成》他们都有自己的缺陷,第一,RMI使用Java标准的对象序列化机制,但是很难穿透防火墙。另一个方面,Hessian和Burlap能很好的穿透防火墙,但是使用私有的对象序列化机制。

就这样Spring invoker应运而生了。HTTP invoker是一个新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(让防火墙可以接受),并使用Java的序列化机制。

 

二、把Bean发布为HTTP服务

2.1、定义服务接口UserService

 

import java.util.List;
import com.gosun.jws.daomain.Users;

/**
 * 测试Spring中配置RMI服务的接口
 * @author Lenovo
 *
 */
public interface UserService {
	/**
	 * 测试返回list
	 * @return
	 */
	public List geAlltUsers();
	/**
	 * 测试返回实体,以及传人普通参数
	 * @param id
	 * @return
	 */
	public Users getUser(String id);
	
	/***
	 * 测试传入对象
	 * @param user
	 */
	public void save(Users user);
	
	/**
	 * 测试传人集合
	 * @param users
	 */
	public void saves(List users);
	
}

 

 

2.2、服务接口实现类

 

import java.util.List;
import com.gosun.jws.daomain.Users;
import com.gosun.jws.daomain.UsersFactory;

public class UserServiceImpl implements UserService {

	@Override
	public List geAlltUsers() {
		return UsersFactory.getUsers();
	}

	@Override
	public Users getUser(String id) {
		System.out.println(id);
		return UsersFactory.getUser();
	}

	@Override
	public void save(Users user) {
		System.out.println(user.toJson());
	}

	@Override
	public void saves(List users) {
		for (Users u : users) {
			System.out.println(u.toJson());
		}
	}

}

 

 

2.3、配置Spring的HttpInvokerServiceExporter和SimpleUrlHandlerMapping

 

	
	
		
		
		
	
	

	
	
		
			
				httpInvokerUserService
			
		
	

	

 

 

2.4、配置DispatcherServlet控制器

因为是基于Http的,所以 HttpInvokerServiceExporter需要实现一个Spring MVC控制器;

在web.xml中配置DispatcherServlet的代码如下:


		dispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			
         	classpath:applicationContext-httpinvoker.xml
         
		
	
	
		dispatcherServlet
		*.service
	

 这个时候启动服务器,就可以完成对 HttpInvoker服务的启动。

 

三、访问HttpInvoker服务

3.1、配置Spring的HttpInvokerProxyFactoryBean代码如下

在classpath路径下面新建applicationContext-httpInvoker.xml加入如下代码


		
		
	

 

 

3.2、测试代码如下

import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.gosun.jws.daomain.Users;

public class ClientDemo {
	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext("client-application/applicationContext-httpInvoker.xml");
		UserService us = (UserService) ac.getBean("httpInvokerUserService");
		Users user = us.getUser("a001");
		System.out.println(user.toJson());
		System.out.println("----------------------------------------");
		List users = us.geAlltUsers();
		for (Users u : users) {
			System.out.println(u.toJson());
		}
		System.out.println("----------------------------------------");
		us.save(user);
		System.out.println("----------------------------------------");
		us.saves(users);
	}
}

 

 

 

你可能感兴趣的:(WebService)