1 简介
webservice即web服务,它是跨语言、跨操作系统的远程调用技术。Apache CXF WebService插件包就是该技术的实现方式之一;整合到springboot项目中使用Apache提供的starter插件包。三种webservice规范:JAX-WS、JAXM、JAX-RS。
Soap协议
它是交换报文的xml协议
WSDL文件
它是soap的xml协议描述,让开发人员能看懂接口
UDDI架构
2 原生ws和rs规范用法
X.1 JAX-WS规范
服务端
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.4</version>
</dependency>
对外服务接口
对外服务接口实现
发布
添加ApacheCXF服务端日志拦截器,查看基于soap协议客户端请求服务端的请求参数和响应参数
访问wsdl说明书
客户端
使用jdk接口代理方式模拟调用
添加ApacheCXF客户端日志拦截器,查看基于soap协议客户端请求服务端的请求参数和响应参数
JAX-WS底层原理
通过soap将客户端请求报文转化为xml格式,服务端接收后将xml转成本服务的对象格式;响应的流程反之。即服务与服务之间入为对象,出为xml。
X.2 JAX-RS规范
服务端
接口
//服务端实体类,用于接收参数
实现
实现和wm的一样,拷过来即可
发布
客服端
//客户端实体类,用于发送xml参数
服务端和客服端都必须加如下json转换包
服务端
客服端
服务端日志
客户端成功接收数据
3 springboot整合Jax-ws和Jax-rs
上面的方式属于使用Netty/Tomcat作为web服务器实现跨平台/跨语言的接口调用,用的是原生的插件包apache cxf;下面就介绍使用Tomcat作为web服务器的调用方式,唯一区别是下面使用的插件包是Apache为springboot提供的starter。
X.1 Jax-ws
服务端
服务端和之前的写法一样,只是访问是默认必须加上services路径。
发布
上面的发布类似于之前的下面这些发布,不过上面这个用于springoot项目
客户端
客户端没怎么变化,只是改下访问地址。
X.2 Jax-rs
服务端
接口和实现类与上面的 ”3.2json格式” 差不多直接拷过来。
发布
将服务发布到endpoint
客服端