前言
在上一章节中,带大家学习了Web Service的理论知识。那么在接下来的章节中,会带大家在SpringBoot中整合Web Service,实现远程接口的调用。
一. 创建通用模块
在本项目中,我们需要创建远程调用的接口,也就是需要有一个可以在A项目里来调用B项目的接口。但A、B两个项目需要依赖一些共同的内容,所以我们应该首先创建这个被共同依赖的通用模块C。
1. 创建实体类User
我们先创建一个封装用户信息的实体类User。
package com.yyg.boot.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author 一一哥Sun
* @Date Created in 2020/5/9
* @Description Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
private Long id;
private String username;
private String address;
}
2. 定义通用的MyService接口
这里壹哥先给大家讲解这个MyService接口的作用及工作原理。
接口类上添加@WebService注解,代表发布一个WebService服务;
接口类添加上@WebService注解后,类中所有的非静态方法都将会对外公布;
如果希望某个方法不对外公开,可以在方法上添加@WebMethod(exclude=true),阻止对外公开;
如果一个类上被添加了@WebService注解,则此类必须至少有一个可以公开的方法,否则将会启动失败。
protected、private、final、static方法不能对外公开。
package com.yyg.boot.service;
import com.yyg.boot.domain.User;
import javax.jws.WebService;
import java.util.List;
/**
* @Author 一一哥Sun
* @Date Created in 2020/5/9
* @Description Description
*/
@WebService(name = "MyService", // 暴露服务名称
targetNamespace = "http://service.boot.yyg.com"// 命名空间,一般是接口的包名倒序
)
public interface MyService {
String sayHello(String msg);
List<User> getUsers();
}
二. 创建Web Service中的Server端项目
接下来我们先创建服务端项目,该项目可以被其他的客户端项目进行远程调用。
1. 添加依赖包
我们在pom.xml文件中添加核心依赖包,如下所示:
<dependency>
<groupId>com.yyg.boot</groupId>
<artifactId>demo46_commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.12</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.12</version>
</dependency>
注意:网上有网友用cxf-spring-boot-starter-jaxws这个依赖包,但是我在Spring Boot2.2.5的环境中,使用该依赖会导致如下异常:
java.lang.ClassNotFoundExce