Spring框架——WebService

Spring集成WebService

WebService介绍

WebService概念

WebService是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。
Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。

WebService是一种跨编程语言跨操作系统平台的远程调用技术

WebService技术

  1. 服务提供者通过WSDL在服务目录UDDI里进行注册发布,
  2. 服务请求者通过WSDL在服务目录UDDI里进行查找想要的服务,
  3. 再找到相应的服务后,服务请求者通过HTTP/SOAP与服务提供者进行服务调用。

技术概念

XML+XSD

  • XML(扩展的可标记语言)是WebService平台中表示数据的格式
  • 优点在于它既是平台无关的,又是厂商无关
  • XML Schema(XSD)定义了一套标准的数据类型

SOAP(简单对象访问协议)

  1. WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特 定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议
  2. SOAP协议 = HTTP协议 + XML数据格式

WSDL(Web Services Description Language)

  • 基于XML的
  • 用于描述WebService以及如何访问WebService的

UDDI(Universal Description Discovery and Integration )

  • 通用描述、发现与集成的缩写
  • 基于XML语言的跨平台的的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务

SOA 面向服务架构

使用WebService提供的功能,基于服务的架构。

微服务

由SOA发展的微小型服务,例如SpringCloud

OOP 面向对象编程

OOD 面向对象设计

SaaS 软件即服务

PaaS 平台即服务

WebService实现

Java原生

不是所有的Java类都可以成为标准的WebService

标准:

  • 必须是public类
  • 不能是final的或者abstract
  • 必须有一个公共的默认构造函数
  • 类中绝对不能有重写的finalize()方法
    • Java技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作

@WebService

  • name:服务的名字
  • targetNamespace :目标的命名空间,网址、域名
  • serviceName:对外公布的名字

@WebMethod

  • operationName :对外方法名
  • action :服务器真正的方法名
  • exclude :

@WebResult

  • name :

@WebParam

  • name:
@WebService(name = "Example", targetNamespace = "http://www.jsoso.com/wstest", serviceName = "WebServiceExample")
public class WebServiceExample {

	@WebMethod(operationName = "toSayHello", action = "sayHello", exclude = false)
	@WebResult(name = "returnWord")
	public String sayHello(@WebParam(name = "userName") String userName) {
		return "Hello" + userName;
	}
}

发布

  1. 声明初始化WebService
  2. 发布WebService
public class StartService {
	public static void main(String[] args) {
		WebServiceExample service = new WebServiceExample();
 		/*
 		* 发布Web Service到http://localhost:8080/hello地址
 		*/
		Endpoint.publish("http://localhost:8080/hello",service);
		System.out.println("启动 http://localhost:8080/hello");
	}
}

WSDL的全文

输入网址

http://localhost:8080/hello?wsdl

访问方式

服务端的WebService和客户端的WebService不一样。
客户端的WebService是通过WSDL自动生成的。
客户端调用自己的WebService等价于调用远端服务器WebService

public class RunClient {
	public static void main(String[] args) {
 		//初始化服务框架类  
       		WebServiceExample service = new WebServiceExample();  
       		//或者本地服务接口的实例  
      		Example server = (Example) service.getExamplePort();  
		String sayHello = server.toSayHello("阿土");
      		System.out.println("输入toSayHello的返回值—"+sayHello);
	}
}

Spring集成CXF

Apache CXF

一个正式的Apache顶级项目,是一个开源的,容易使用的Web服务框架

  • CXF框架是一种基于Servlet技术SOA应用开发框架
  • 高性能,扩展简单且容易使用,支持多种标准
  • 与Spring天然无缝集成

CXF与Spring整合实现WebService服务器端

  1. 创建Dynamic Web project,引入CXF的jar包
  2. 编写即将发布为WebService的接口以及实现类
  3. web.xml中配置CXF,使其生效
  4. web.xml中配置Spring
  5. 创建Spring的bean配置文件applicationContext.xml
  6. 运行项目,检验结果检验成果

配置web.xml

配置CXF
配置SpringMVC

配置applicationContext.xml

编写WebService类

CXF动态调用WebService

posted @ 2020-08-29 18:46  不爱学习的小策  阅读(793)  评论(0编辑  收藏  举报