WebService

WebService回顾:任务目标第一章 什么是WebService?1.1 什么是远程调用技术1.2 WebService的原理图第二章 WebService入门程序2.1 需求2.2 环境2.3 实现2.3.1 服务端开发步骤:2.3.2 客户端注意:开发步骤:2.3.3 WebService的优缺点a.优点:b.缺点:第三章 WebService的应用场景3.1 软件集成与复用3.2 适用场景3.3 不适用场景第四章 WebService的三要素4.1 SOAP:简单对象访问协议4.1.1 定义4.2.1 协议格式4.2.2 TCP/IP Monitor4.2.3 SOAP1.14.2.4 SOAP1.24.2.5 SOAP1.1和SOAP1.2区别4.2 WSDL:Web服务描述语言4.2.1 定义4.2.2 文档结构4.2.3 阅读方式从下往上4.3 UDDI:目录服务第五章 WebService客户端调用方式5.1 生成客户端调用方式5.1.1 wsimport 命令介绍5.1.2 调用公网手机号归属地查询服务5.1.3 公网天气服务端查询5.1.4 特点5.2 客户端编程调用方式5.3 HttpURLConnection调用方式第一步 创建服务地址第二步 打开一个通向服务地址的连接第三步 设置参数第四步 组织SOAP数据,发送请求第五步 接收服务端响应,打印第六章 深入开发:用注解修改WSDL内容6.1 JAX-WS注解6.1.1 注解说明6.1.2 注解示例6.1.3 使用注解注意的地方课前默写作业面试题

回顾:

1. Spring整合MyBatis框架的配置详解
2. Spring整合MyBatis框架的具体操作

任务

1. WebService简介
2. WebService基础应用
3. WebService的基本要素
4. WebService的客户端调用方式
5. 使用注解修改WSDL内容

目标

1. 掌握WebService的基本概念
2. 掌握WebService基础应用
3. 掌握WebService的基本要素
4. 掌握WebService的客户端调用方式
5. 掌握如何使用注解修改WSDL内容

第一章 什么是WebService?

   web Service也叫XML Web Service,Web服务。可使用开放的xml标准来描述、发布、发现、协调和配置这些应用程序。用于开发分布式的互操作的应用程序。
   是一种跨编程语言、跨操作系统、跨网络的远程服务器调用技术。
   Webservice使用http传输SOAP协议的数据的一种远程调用技术

1.1 什么是远程调用技术

​ 远程调用数据定义:是系统和系统之间的调用.

1.远程调用技术说明

1.2 WebService的原理图

1. Webservice是使用Http发送SOAP协议的数据的一种远程调用技术
2. Webservice要开发服务端
3. Webservice要开发客户端
4. Webservice客户端开发需要阅读服务端的使用说明书(WSDL)

2.webservice实现原理图

第二章 WebService入门程序

WebService开发规范

  1. JAX-WS: java api for xml web service

  2. JAXM:java api from xml message主要定义了包含了发送和接收消息所需的API

  3. JAX-RS:java api from xml RESTFUL

    ​ JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范

以下演示JAX-WS案例:

2.1 需求

2.2 环境

JDK:1.8

Eclipse:2017

2.3 实现

2.3.1 服务端
开发步骤:
 

3.wsdl阅读

2.3.2 客户端
注意:
1. 要先发布服务,服务运行的状态下生成代码
2. -s后面有个小点,用于指定源代码生成的目录。点即当前目录。
3. 运行客户端必须开启远程服务
开发步骤:
 
2.3.3 WebService的优缺点
a.优点:
1.发送方式采用http的post发送,http的默认端口事80,防火墙默认不拦截80,所以跨防火墙。
2.采用XML格式封装数据,XML是跨平台的,所以webservice也是跨平台的。
3.webService支持面向对象
b.缺点:
    采用XML格式封装数据,所以在传输过程中,要传输额外的标签,随着SOAP协议的不断完善,标签越来越大,导致webservice性能下降

第三章 WebService的应用场景

3.1 软件集成与复用

4.软件集成与复用

3.2 适用场景

3.3 不适用场景

第四章 WebService的三要素

4.1 SOAP:简单对象访问协议

4.1.1 定义
SOAP:(Simple Object Access Protocol)简单对象访问协议。是XML Web Service 的通信协议.当用户通过UDDI找到		你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。
     SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP.
SOAP=http+xml
4.2.1 协议格式

7.soap请求协议简要说明

1. 必须有Envelope元素,此元素将整个XML文档标识为一条SOAP消息
2. 可选的Header元素,包含头部信息
3. 必须有Body元素,包含所有的调用和响应信息
4. 可选的Fault元素,提供有关在处理此消息所发生错误的信息
4.2.2 TCP/IP Monitor
4.2.3 SOAP1.1

使用代理服务端口号和地址进行测试

4.2.4 SOAP1.2

​ 备注: 在某些版本上不支持SOAP1.2服务端发布,直接发布异常。

​ 需要在服务端引入第三方JAR(jaxws-ri-2.2.8\jaxws-ri\lib下所有jar包)

4.2.5 SOAP1.1和SOAP1.2区别
相同点:
    请求发送方式相同:都是使用POST
    协议内容相同:都有Envelope和Body标签
不同点:
	数据格式不同:content-type不同
      SOAP1.1:text/xml;charset=utf-8
      SOAP1.2:application/soap+xml;charset=utf-8
	命名空间不同:
      SOAP1.1:http://schemas.xmlsoap.org/soap/envelope/
      SOAP1.2:http://www.w3.org/2003/05/soap-envelope

4.2 WSDL:Web服务描述语言

4.2.1 定义
WSDL:Web Services Description Language.
     是基于 XML 的用于描述Web Service及其函数、参数和返回值。通俗理解Wsdl是webservice的使用说明书.大多数情况下由软件自动生成和使用.
     一般用于Web Service的发布的服务的说明文档。
4.2.2 文档结构

5.wsdl文档结构

<service>:服务视图,webservice的服务结点,它包括了服务端点
<binding>:为每个服务端点定义消息格式和协议细节
<portType>:服务端点,描述 web service可被执行的操作方法,以及相关的消息,通过binding指向portType
<message>:定义一个操作(方法)的数据参数(可有多个参数)
<types>:定义 web service 使用的全部数据类型
4.2.3 阅读方式从下往上

6.wsdl阅读方式

4.3 UDDI:目录服务

 

第五章 WebService客户端调用方式

公网服务地址:

http://www.webxml.com.cn/zh_cn/index.aspx

5.1 生成客户端调用方式

5.1.1 wsimport 命令介绍
1. wsimport就是jdk提供的的一个工具,作用就是根据WSDL地址生成客户端代码.
2. 位置JAVA_HOME/bin目录下
3. wsimport常用的参数:
                 -s  生成java文件的
                 -d  生成class文件的,默认参数
                 -p  指定包名的,如果不加该参数,默认包名就是wsdl文档中的命名空间的倒序
5.1.2 调用公网手机号归属地查询服务
 
5.1.3 公网天气服务端查询
 
5.1.4 特点
	该种方式使用简单,但一些关键的元素在代码生成时写死到生成代码中,不方便维护,所以仅用于测试。

5.2 客户端编程调用方式

 

5.3 HttpURLConnection调用方式

第一步 创建服务地址
第二步 打开一个通向服务地址的连接
第三步 设置参数

​ 设置POST,POST必须大写,如果不大写,报异常

第四步 组织SOAP数据,发送请求
第五步 接收服务端响应,打印

示例:

 

第六章 深入开发:用注解修改WSDL内容

6.1 JAX-WS注解
6.1.1 注解说明
 
6.1.2 注解示例
 
6.1.3 使用注解注意的地方

@WebMethod对所有非静态的公共方法对外暴露为服务.

对于静态方法或非public方法是不可以使用@WebMethod注解的.

对public方法可以使用@WebMethod(exclude=true)定义为非对外暴露的服务。

课前默写

1. Spring整合MyBatis框架的配置
2. Spring整合MyBatis框架的操作

作业

1. 开发一个天气服务
2. 开发一个短信验证码服务(模拟)

面试题

1. 什么是WebService,WebService有什么作用
2. 什么是SOAP、WSDL
3. WebService一般在什么时候使用,你在项目中什么地方应用到了