1. 复习准备

1.1. Schema约束

几个重要知识:

  1. namespace

相当于schema文件的id

  1. targetNamespace属性

用来指定schema文件的namespace的值

  1. xmlns属性

引入一个约束, 它的值是一个schema文件的namespace

  1. schemaLocation属性

用来指定引入的schema文件的位置

schema规范中:

1. 所有标签和属性都需要有schema文件来定义

2. 所有的schema文件都需要有一个id, 但在这里它叫namespace,

3. namespace的值由什么来指定?

由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)

4. 如何引入一个Schema约束?

属性? : 用xmlns属性

属性值: 对应的schema文件的id(namespace值)

5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置

6. schema文件的位置由什么属性来指定?

属性? : schemaLocation

属性值: namespace path

7. 如果引入了N个约束, 需要给n-1个取别名

  

1.2. HTTP协议

几个重要知识:

1. 请求的组成:
    请求行(请求方式  path  http1.1)

请求头

请求体: 只有post请求有

2. 响应的组成
    响应状态行:

响应头

响应体 : 浏览器解析显示的数据

3. 请求的过程
   

Web service是什么?

1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)

2. 一个跨语言、跨平台的规范(抽象)

3. 多个跨平台、跨语言的应用间通信整合的方案(实际)

以各个网站显示天气预报功能为例:

气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).

网站提供了天气预报的服务,但其实它们什么也没有做,只是简单了调用了一下气象中心服务器上的一段代码而已

webservice接口优点

跨平台调用

跨语言调用

远程调用

什么时候使用web Service?

1. 同一家公司的新旧应用之间

2. 不同公司的应用之间

分析业务需求:天猫网与中通物流系统如何交互?

3. 一些提供数据的内容聚合应用:天气预报、股票行情

Web Service中的几个重要术语

. WSDL:web service definition language

直译 : WebService定义语言

1. 对应一种类型的文件.wsdl

2. 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式

3. 一个web service对应一个唯一的wsdl文档

SOAP:simple object  access protocal

直译: 简单对象访问协议

  1. 是一种简单的、基于HTTPXML的协议, 用于在WEB上交换结构化的数据
  2. soap消息:请求消息响应消息
  3. http+xml片断

SEI:WebService EndPoint Interface(终端)

直译: web service的终端接口,

1. 就是WebService服务器端用来处理请求的接口

CXF:Celtix + XFire 框架

一个apache的用于开发webservice服务器端和客户端的框架

idea根据wsdl文件或者接口wsdl文件生成客户端和服务端代码

wsdl文件中重要标签

  • types - 数据类型(标签)定义的容器,里面使用schema定义了一些标签结构供message引用
  • message - 通信消息的数据结构的抽象类型化定义。引用types中定义的标签
  • operation - 对服务中所支持的操作的抽象描述,一个operation描述了一个访问入口的请求消息与响应消息对。
  • portType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
  • binding - 特定端口类型的具体协议和数据格式规范的绑定。
  • service- 相关服务访问点的集合
  • port - 定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。

cxf支持的数据类型

1.基本类型

      int,float,boolean

2.引用类型

String,数组,list,set,map,自定义类型

  1. CXF框架的深入使用

1).CXF的拦截器

1.1) 理解

  • 为什么设计拦截器?

    1. 为了在webservice请求过程中,能动态操作请求和响应数据, CXF设计了拦截器.
  • 拦截器分类:
    1. 按所处的位置分:服务器端拦截器,客户端拦截器
    2. 按消息的方向分:入拦截器,出拦截器
    3. 按定义者分:系统拦截器,自定义拦截器

拦截器API

Interceptor(拦截器接口)

AbstractPhaseInterceptor(自定义拦截器从此继承)

LoggingInInterceptor(系统日志入拦截器类)

LoggingOutInterceptor(系统日志出拦截器类)

1.2) 编码实现拦截器

  • 使用日志拦截器,实现日志记录

    • LoggingInInterceptor
    • LoggingOutInterceptor
  • 使用自定义拦截器,实现用户名与密码的检验
    • 服务器端的in拦截器
    • 客户端的out拦截器
    • xfzhang/12345

2). 用CXF编写基于spring的web service

2.1). 编码实现

  1. Server

    • 创建spring的配置文件beans.xml,在其中配置SEI
    • 在web.xml中,配置上CXF的一些核心组件
  2. Client
    • 生成客户端代码
    • 创建客户端的spring配置文件beans-client.xml,并配置
    • 编写测试类请求web service

2.2). 添加自定义拦截器

  1. Server

    • 在beans.xml中,在endpoint中配置上入拦截器
  2. Client
    • 通过Client对象设置出拦截器
    1. 其它调用WebService的方式

1). Ajax调用webService

跨域请求问题:

1. 什么是跨域请求?   Host

1. sina.com--=->baidu.com/xxx.jsp

2. localhost----à192.168.42.165

2. 解决ajax跨域请求webservice的问题?

在客户端应用中使用java编码去请求webservice, 在页面中去请求自己的后台

2). Jquery调用WebService

3). HttpURLConnection调用WebService

  1. 通过注解修改wsdl文档

1). JDK中的相关注解

1.1).  @WebService

  1. 作用在具体类上。而不是接口。
  2. 一个类只有添加了此注解才可以通过Endpoint发布为一个web服务。
  3. 一个添加了此注解的类,必须要至少包含一个实例方法。静态方法和final方法不能被发布为服务方法。
  4. WebService注解包含以下参数:

1.2).  @WebMethod

  1. 此注解用在方法上,用于修改对外暴露的方法。

1.3).  @WebResult

用于定制返回值到WSDL的映射

1.4).  @WebParam

用于定义WSDL中的参数映射

这个是接口里面区别名

1.5).  @XmlElement

用于定义实体类的属性到WSDL中的映射(get/set方法上)

可以给接口arg1,取别名,这样更好的交互

2). 说明

即使是没有修改源代码,只修改了注解,客户端的代码也必须要重新生成, 否则调用将会失败。

备注:

如果之前项目中存在没用cxf框架发布的webservice接口,那么cxf框架和entpoint.publish()发布接口不能共存。

另外接口类和实现类不在一个包下,那么@webservice中命名空间要求一致

webservice接口开发经历相关推荐

  1. 使用xfire webservice接口开发,obj与xml相互转换好用工具类,不需要写大量的转换代码,亲测可用

    webservice接口开发,旧工程中存在使用xfire开发的接口,对象转换为xml和xml转换为对象的时候需要些大量的代码,工作量很大.现在提供一个比较好的对象转换为xml的工具. <!-- ...

  2. UAP-STUDIO的NC系统Webservice接口开发

    UAP-STUDIO的NC系统Webservice接口开发 想要发布webservice接口,首先在eclipse中需要有发布webservice接口的工具WSTools,这个可以直接在浏览器搜索nc ...

  3. NC65发布webservice接口开发环境启动服务找不到接口

    最近在做NC65的webservice接口,接口发布以后,在开发环境启动NC服务,访问url : http://127.0.0.1:80/uapws/service 看不到自己发布的接口 目前遇到有几 ...

  4. webservice接口开发详解(附完整流程demo)

    摘要 由于公司对接第三方系统业务较多,所以就采用webservice进行对接,本文项目框架使用SSH搭建,其他框架也可以参考下具体使用流程,本文demo都是测试通过而且发布成功,有需要的可以直接cop ...

  5. java webservice接口开发_给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)

    J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...

  6. java webservice接口开发_php开发webservice服务端接口(wsdl)

    首先要创建两个文件Test.php Test.wsdl Test.php文件代码是处理具体业务的接口代码 Test.php代码: ?php ini_set("soap.wsdl_cache_ ...

  7. java webservice接口开发_搭建Soap webservice api接口测试案例系统

    Eclipse下创建WebService项目,主要目的是作为Postman.soapUI等工具进行soap webservice 接口测试的案例. 本文基于Axis2框架,在eclipse环境下搭建w ...

  8. Java+Axis WebService接口开发实例

    一.下载Axis的jar包 下载地址:http://ws.Apache.org/axis/ 二.创建两个Web项目 1.WebService项目:负责提供接口,导入Axis的Jar包 (1)创建ser ...

  9. java cxf 工具_利用CXF工具开发WebService接口

    简单记录一下webservice接口开发以便供以后参考: 一.根据需求编写wsdl文件 WSDL的文件格式和语法我就不多说了,到网上百度一下,或者到W3CSchool去学习都可以,语法很简单,下面是我 ...

  10. 利用MyEclipse开发一个调用webservice接口的程序

    上一篇文章我们已经学习了如何使用Java 工具MyEclipse开发一个webservice接口,那么接口开发好了如何调用?接下来我们就来解决这个问题. 1:首先随便创建一个Java project选 ...

最新文章

  1. PHP 算法题:有多少苹果用来分赃1.1
  2. 浅谈 ThreadLocal
  3. 静态程序分析chapter3 - 数据流分析详述(Reaching Definitions、Live Variables、Available Expressions Analysis)
  4. 双系统XP和ubuntu,升级ubuntu出现no such device grub rescue
  5. python怎么变成竖行_python 处理文本 列变成行
  6. python3.5安装pygame_python怎么安装pygame
  7. C#中ListT用法
  8. 3d怎么把两个面拼接在一起_vr全景看房用什么软件做的?3D看房是怎么拍摄的?...
  9. 管理感悟:掌握写文档的技能
  10. java 抽象工厂 类图_Java设计模式——抽象工厂模式
  11. “黑客”必用兵器之“网络抓包工具”
  12. 华南技术盛会:BingoDay2017在天河人才港盛大举行
  13. php数字验证码代码,php中文字母数字验证码实现代码
  14. 弘辽科技:拼多多商品搜索热度如何提升?技巧分享
  15. eNSP vlan 划分实验
  16. linux下gbd调试基础
  17. ES2015 Proxy 对比 defineProperty
  18. 完美解决Win10 X64非原装版系统打不开CHM文件
  19. Ubuntu杀死进程
  20. Phunware在全球发行Phun实用型代币

热门文章

  1. 微信小程序使用组件库
  2. [深度学习] 自然语言处理 ----- Attention机制中的Q,K,V介绍
  3. Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计
  4. tcp粘包 java_详说tcp粘包和半包
  5. windows系统TLQ8安装时提示载入java vm时windows出现错误
  6. 科赫小雪花python实验报告_基于python绘制科赫雪花
  7. 思维导图不会画,没关系,实用思维导图模板分享
  8. stm32f103测脉冲数用于带霍尔编码器的电机测速
  9. 2022数字化智慧工地助力建筑施工企业数字化转型
  10. ssd网络结构_SSD的理解