WebService个人笔记

  • 1.1 WebService介绍

    WebService可以跨平台跨应用进行通信(客户端请求调用服务端,服务端返回数据)。

    解决多个系统之间的信息通信,解决信息孤岛问题。

    WebService的特点:

    1. Webservice是自包含的(不需要使用任何的软件,只需要支持httpxml即可)
    2. Webservice是自我描述的(只需要知道请求和响应的内容格式即可使用)
    3. WebService是跨平台和跨语言的(客户端和服务端均可在不同平台,不同语言进行使用)
    4. WebService是基于开放和标准的
    5. WebService是可以组合的
    6. WebService是松散耦合的(完全解耦客户端与服务端)
    7. WebService提供编程访问的能力
    8. WebService是通过网络进行发布,查找和使用的

    发布WebService的方式:

    • JWS 发布
    • Axis2发布
    • CXF 发布
    • Ksoap2-android 发布

    WebService相关术语

    1. XML:扩展型可标记语言
    2. SOAP:简单对象访问协议
    3. WSDLweb service description language
    4. UDDI:通用描述、发现与集成服务

    1.2 WebService工作原理

    WebService体系结构图:

    1.3 SOAP解析

    1.3.1 SOAP分为四个部分:

    1. SOAP封装:它定义了一个框架,该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
    2. SOAP编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
    3. SOAP RPC表示:它定义了用于表示远程过程调用和应答的协定。
    4. SOAP绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。

    1.3.2 协议结构:SOAP消息格式

    标题头为可选元素,body为必须的元素

    1.3.3 语法规则:

    1. SOAP 消息必须用XML来编码
    2. SOAP 消息必须使用SOAP Envelope命名空间。
    3. SOAP 消息不能包含DTD引用
    4. SOAP 消息不能包含XML处理指令

    1.3.4 SOAP的优点

    • 可扩展的
    • 简单的
    • 完全和厂商无关(相对于操作系统、平台、编程语言等可以独立运行)

    1.4 WSDL解析

    1.4.1 WSDL 文档

    • 类型—使用某种的类型系统(如XSD)定义数据类型的容器
    • 消息—通过数据抽象的有类型的定义
    • 操作—服务支持动作的对象描述
    • 端口类型—一个操作的抽象集合,该操由一个或多个端点支持
    • 绑定—针对一个特定端口类型的具体协议规范和数据格式规范
    • 端口—一个单一的端点,定义成一个绑定和一个网络地址的链接
    • 服务—相关端点的集合

    1.4.2 根元素

    1.4.3 数据类型定义元素:<types>

    1.4.4 消息体定义元素:<message>

    输入参数与输出参数隔离

    1.4.5 函数体定义元素: <portType>

    portTypeName属性对应java中的服务类的类名

    1.4.6 绑定实现定义元素:<binding>

    1.4.7 服务地址绑定元素:<service>

    在一个WSDL文档中可以有多个service,一个service可以有多个端口

    1.5 WebService注解说明以及优缺点

    1.5.1 WebService的常用注解

    1. @WebService注释标记Java

    实现Web ServiceJava类必须指定@WebService@WebServiceProvider注释。不能同时提供这两种注释

    • 属性:name

    wsdl:portType的名称。缺省值为Java类或接口的非限定名称。

    • 属性:targetNamespace

    指定从Web Service生成的WSDLXML名称空间。缺省值为从包含该Web Service的包名映射的名称空间。

    • 属性:serviceName

    指定Web Service的服务名称:wsdl:service。缺省值为Java类的简单名称+Service

    • 属性:endpointInterface

    指定用于定义服务的抽象Web Service约定的服务端点接口的限定名。如果指定了此限定名,那么会使用该服务端点接口来确定抽象WSDL约定。

    • 属性:portName

    wsdl:portName。缺省值为WebService.name+Port.

    • 属性:wsdlLocation

    指定用于定义Web ServiceWSDL文档的Web地址。Web可以是相对路径或绝对路径。

    2. @WebMethod注释表示作为一项Web Service操作的方法

    将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于JavaBeans端点的服务器端点实现类。仅支持在使用@WebService注释来注释的类上使用@WebMethod注释。

    • 属性:operationName

    指定与此方法相匹配的wsdl:operation的名称。缺省值为Java方法的名称

    • 属性:action

    定义此操作的行为。对于SOAP绑定,此值将确定SOAPAction头的值。缺省值为Java方法的名称。

    • 属性:exclude

    指定是否从Web Service中排除某一方法。缺省值为false

    3. @WebParam注释用于定制从单个参数至Web Service消息部件和XML元素的映射。

    将此注释应用于客户机或服务器端点接口(SEI)上的方法,或者应用于JavaBeans端点的服务器端点实现类。

    • 属性:name

    参数的名称。如果操作是远程过程调用(RPC)类型并且未指定partName属性,那么这是用于表示参数wsdl:part属性的名称。

    • 属性:partName

    定义用于表示此参数的wsdl:part属性的名称。仅当操作名称为RPC或者操作文档类型并且参数类型为BARE时才使用此参数。

    • 属性:targetNamespace

    指定参数的XML元素的XML名称空间。当属性映射至XML元素时,仅应用于文档绑定。缺省值为Web ServicetargetNamespace

    • 属性:mode

    此值表示此方法的参数流的方向。有效值为IN, INOUT, OUT

    • 属性:header

    指定参数是在消息头还是在消息体中。缺省值为false

    4. @WebResult注解用于定制从返回值至WSDL部件或XML元素的映射

    将此注释应用于客户机或服务器端点接口(SEI)上的方法,或者应用于JavaBeans端点的服务器端点实现类。

    • 属性:name

    当返回值在WSDL文件中并且在连接上的消息中找到该返回值时,指定该返回值的名称。对于RPC绑定,这是用于表示返回值的wsdl:part属性的名称。

    • 属性:targetNamespace

    指定返回值的XML名称空间。仅当操作类型为RPC或者操作是文档类型并且参数类型为BARE才使用此参数

    1.5.2 WebService的优点

    1. 跨防火墙的通信
    2. 应用程序集成
    3. B2B的集成
    4. 软件和数据重用
      1. WebService的缺点(不适用的场合)
    1. 单机应用程序
    2. 局域网的一些应用程序

    2 WebService学习

    2.1  schema规范

    1. 所有的标签和属性都需要定义(有schema文件来进行约束)
    2. 所有的schema文件都要有一个id,这里叫namespace
    3. Namespace的值由什么来指定?
      1. targetNamespace属性来指定,它的值是一个url(很有可能不存在)
    4. 如何引入一个schema约束?
      1. 属性:用xmlns属性
      2. 属性值:对应schema文件的namespace的值
    5. 如果引入的schema不是w3c组织定义,必须指定schema文件的位置
    6. Schema文件的位置由什么属性来指定?
      1. 属性:schemaLocation
      2. 属性值:{namespace} {location}
    7. 如果引入了n个约束,需要给n-1个约束取别名
      1. namespace

      相当于schema文件的id

      1. targetNamespace属性

      用来指定schema文件的namespace的值

      1. xmlns属性

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

      1. schemaLocation属性

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值