参考博客:
https://www.cnblogs.com/nwu-edu/p/9542074.html
https://www.cnblogs.com/liulihaha/p/10518214.html
WebService接口设计和测试
一、服务端设计webService接口
1、创建一个web项目,引入WebService和Spring的相关maven依赖,配置pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.codequ</groupId>
<artifactId>webService</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>webService Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- webService的相关依赖 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.8</version>
</dependency>
<!-- 测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- spring相关依赖引入 参考博客:https://www.cnblogs.com/nwu-edu/p/9542074.html -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
</dependencies>
</project>
2、配置spring-cxf.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"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- webService服务接口的发布,在此文件进行配置(一般在服务接口业务实现后再发布) -->
<jaxws:endpoint id="helloService" implementor="com.codequ.service.impl.HelloServiceImpl" address="/helloService"/>
</beans>
3、配置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_2_5.xsd" id="WebApp_ID" version="2.5">
<!-- 获取配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-cxf.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
</web-app>
4、定义用于webService接收传参和返回参数的实体类
package com.codequ.entity;
/**
* description: </br>
*
* @version 1.0
* @className: RequestBO
* @author: liqing.qu
* @date: 2022/2/16 11:06
* @since JDK 1.8
*/
public class RequestBO {
private String name;
private String message;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
return "RequestBO{" +
"name='" + name + '\'' +
", message='" + message + '\'' +
'}';
}
}
package com.codequ.entity;
/**
* description: </br>
*
* @version 1.0
* @className: ResultData
* @author: liqing.qu
* @date: 2022/2/16 11:05
* @since JDK 1.8
*/
public class ResultData {
private String code;
private String result;
private String message;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
5、定义webService服务接口
package com.codequ.service;
import com.codequ.entity.RequestBO;
import com.codequ.entity.ResultData;
import javax.jws.WebService;
/**
* description: </br>
* 参考网址:https://www.cnblogs.com/liulihaha/p/10518214.html
* @version 1.0
* @className: HelloService
* @author: liqing.qu
* @date: 2022/2/15 22:08
* @since JDK 1.8
*/
@WebService
public interface HelloService {
public void testWebService();
public ResultData testParamWebService(RequestBO requestBO);
}
6、实现webService服务接口
package com.codequ.service.impl;
import com.codequ.entity.RequestBO;
import com.codequ.entity.ResultData;
import com.codequ.service.HelloService;
import javax.jws.WebService;
/**
* description: </br>
*
* @version 1.0
* @className: HelloServiceImpl
* @author: liqing.qu
* @date: 2022/2/15 22:09
* @since JDK 1.8
*/
@WebService
public class HelloServiceImpl implements HelloService {
@Override
public void testWebService() {
System.out.println("服务器webService成功启动!");
}
@Override
public ResultData testParamWebService(RequestBO requestBO) {
System.out.println(requestBO);
ResultData resultData = new ResultData();
resultData.setCode("200");
resultData.setResult("SUCCESS");
resultData.setMessage("测试成功");
return resultData;
}
}
7、spring-cxf.xml中发布服务接口
<jaxws:endpoint id="helloService" implementor="com.codequ.service.impl.HelloServiceImpl" address="/helloService"/>
8、启动web服务,在浏览器中访问链接:http://localhost:8080/项目名/service/helloService?wsdl
,得到下图所示结果即成功!
二、通过Soap UI对WebServie服务接口进行测试
1、创建接口测试项目,New SOAP Project
2、测试接口项目命名,初始化WSDL,即浏览器测试成功的地址:http://localhost:8080/项目名/service/helloService?wsdl
3、创建成功后,我们会看到webService服务接口下的所有业务方法,如下图中的:testParamWebService和testWebService方法
4、这里testParamWebService方法为例进行测试
1)布局功能
2)填写测试数据,发送请求,并返回响应结果
3)服务端测试方法正常执行
三、客户端调用服务端的WebService服务接口
待更新。。。