spring-ws搭建webservice服务

本文主要介绍如何根据spring提供的spring-ws构建一个简单的webservice服务。

在开始之前,首先需要新建一个maven项目,这里不再赘述如何新建maven web项目。

1、配置pom文件

使用spring-ws构建webservice服务,需要依赖spring-ws-core,spring-core


	4.0.0
	com.webservice
	service
	war
	0.0.1-SNAPSHOT
	service Maven Webapp
	http://maven.apache.org

	
		4.3.2.RELEASE
		2.5
		2.4.0.RELEASE
	

	
		
			junit
			junit
			3.8.1
			test
		
		
		
			org.springframework
			spring-core
			${spring.version}
		
		
		
			org.springframework.ws
			spring-ws-core
			${springws.version}
		
		
		
			org.apache.logging.log4j
			log4j-core
			${log4j2_version}
		
		
			org.apache.logging.log4j
			log4j-api
			${log4j2_version}
		
		
			org.apache.logging.log4j
			log4j-web
			${log4j2_version}
		
	
	
		service
	

2、配置web.xml




	Archetype Created Web Application
	
		spring-ws
		org.springframework.ws.transport.http.MessageDispatcherServlet
		  
          
		
			transformWsdlLocations
			true
		
		1
	
	
		spring-ws
		/service/*
	
	
		spring-ws
		*.wsdl
	

3、配置ws文件

在WEB-INF文件夹下新建一个spring-ws-servlet.xml文件、然后进行配置




	
	

	
	
4、在WEB-INF下新建wsdl文件夹,新建UserService.wsdl文件并做如下配置



	
	
		
			
				
					
						
						
					
				
			
			
				
					
						
					
				
			
			
				
					
						
					
				
			
			
				
					
						
					
				
			
		
	
	
	
		
	
	
		
	
	
	
		
	
	
		
	
	
	
		
		
			
			
		
		
		
			
			
		
	
	
	
		
		
			
			
				
			
			
				
			
		
		
			
			
				
			
			
				
			
		
	
	
		
			
		
	

5、生成java文件

运行cmd命令 进入sdk的bin目录
输入命令:wsimport -keep -verbose -s '代码路径' 'wsdl文件路径'
 新建包,并拷贝生成的文件到项目中,有些没用的可以删掉,清理之后的文件目录大致为:

spring-ws搭建webservice服务_第1张图片

6、编写userservice接口实现类

package service.ron.service;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;

import service.ron.api.IUserService;

/**
 * @Comment
 * @Author Ron
 * @date 2017年1月9日 上午11:26:35
 */
@Component("userService")
public class UserServiceImpl implements IUserService {
	private static final Logger logger = LogManager.getLogger(UserServiceImpl.class);

	@Override
	public String login(String username, String password) {
		// TODO Auto-generated method stub
		logger.info(username + "登录");
		String out = "";
		if (username.equals("ron") && password.equals("111")) {
			out = "login success";
		} else {
			out = "login error";
		}
		logger.info(username + " " + out);
		return out;
	}

	/**
	 * 检查用户
	 */
	@Override
	public String checkuser(String userkey) {
		return "00";
	}
}

7、编写endpoint

生成的代码中没有endpoint,需要我们自己去写endpoint

package service.ron.endpoint;

import javax.annotation.Resource;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;

import service.ron.api.IUserService;
import service.ron.entity.Checkuser;
import service.ron.entity.CheckuserResponse;
import service.ron.entity.Login;
import service.ron.entity.LoginResponse;
/**
 * @Comment
 * @Author Ron
 * @date 2017年1月9日 上午11:32:37
 */
@Endpoint
public class UserServiceEndpoint {
	private static final Logger logger = LogManager.getLogger(UserServiceEndpoint.class);
	// UserService.wsdl声明的命名空间
	public static final String USERVICE_NAMESPACE = "http://localhost/namespace/userservice/";

	@Resource(name = "userService")
	private IUserService userService;

	@PayloadRoot(namespace = USERVICE_NAMESPACE, localPart = "login")
	@ResponsePayload
	public LoginResponse handleLoginRequest(@RequestPayload Login request) {
		logger.info("Entered into handelLoginRequest method.");

		String info = userService.login(request.getUsername(),request.getPassword());

		LoginResponse response = new LoginResponse();
		response.setOut(info);

		logger.info("Exit from handelLoginRequest method.");
		return response;
	}
	
	/**
	 * @Comment 处理检查用户信息
	 * @Author Ron
	 * @Date 2017年1月9日 下午4:43:46
	 * @param request
	 * @return
	 */
	@PayloadRoot(namespace = USERVICE_NAMESPACE, localPart = "checkuser")
	@ResponsePayload
	public CheckuserResponse handleCheckRequest(@RequestPayload Checkuser request) {
		logger.info("Entered into handleCheckRequest method.");
		
		String info = userService.checkuser(request.getUserkey());
		
		CheckuserResponse response = new CheckuserResponse();
		
		response.setOut(info);

		logger.info("Exit from handleCheckRequest method.");
		return response;
	}
}

8、soapui测试结果

如果不知道soapui是啥或者不知道怎么用,百度一下就可以了。

spring-ws搭建webservice服务_第2张图片


spring-ws搭建webservice服务_第3张图片


源码下载:http://download.csdn.net/detail/zyhlwzy/9732973

你可能感兴趣的:(spring-ws搭建webservice服务)