什么是服务中间件WebService
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。
WebService作用是什么
- 基于Web的服务:服务器端提供一些资源让客户端应用访问
- 一个跨语言、跨平台的规范
- 多个跨平台、跨语言的应用间通信整合的方案
WebService能解决什么业务场景
- 跨平台调用(不同os系统)
- 跨语言调用(不同开发语言)
- 远程调用(不同服务)
关于WebService的重要知识点
- WSDL(web service definition language)
WSDL是webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程
- SOAP(simple object access protocal)
soap是”简单对象访问协议”是一种简单的、基于XML格式的协议, 用于在WEB上交换结构化的数据。SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。
soap消息:请求消息和响应消息
- SEI(WebService EndPoint Interface)
SEI是web service的终端接口(javax自带),就是WebService服务器端用来处理请求的接口
- CXF(Celtix + XFire)
apache的用于开发webservice服务器端和客户端的框架。
什么是JAX-WS
JAX-WS(Java API for XML Web Services)规范是一组XML web services的JAVA API。在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。
API实现JAX-WS代码
服务提供方
web-service服务方(提供服务)主要是写webservice的接口定义及接口实现类的定义。
- pom.xml依赖配置
这里cxf依赖使用3.1.4的版本
<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>cxf-ws</groupId>
<artifactId>spring-webservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<