WSDL文档结构

一个WSDL文档就是一个服务和消费者之间沟通的契约。这个契约提供了诸如服务端点、操作及对这些操作所需要的数据类型等关键信息。服务契约还用来明确和描述服务中的消息交换格式、服务基本调用方式,比如接收请求/响应(request/response)模式,或者是要求/响应(solicit/response)模式。整个WSDL文档结构最外层的元素(又称作文档或根元素)名称被命名为“definitions”,difinitions根元素分为以下几个部分:

  • 类型(types)部分,这部分不是必需的,通常基于像xml模式(XML Schema)这样的类型系统来提供数据类型的定义。这种用来定义数据类型的文档就是XSD(XML Schema Definition)。在数据类型部分可以持有、指向或引入一个XSD。如果类型部分为空,就像前面TimeServer服务例子,那么通常服务只是使用简单数据类型,比如xsd:String和xsd:long。

  • 消息(message)部分,该部分定义了实现服务的相关消息。消息使用的数据类型通常来自前面的类型定义部分,当然如果类型定义部分为空,则使用默认类型。此外,消息的顺序表明的服务的请求模式。从服务的角度定义的方向性指示属性“in”和“out”:其中方向指示属性为in的消息是发送到服务器端的,而方向指示属性为out的消息则是由服务响应返回的。因此,消息顺序“in/out”对应请求/响应(request/response)模式。而"out/in"顺序的消息则对应 要求/响应(solicit/response)模式。比如对TimeServer服务而言,有4个消息:分别针对操作getTimeAsString和getTimeAsElapsed的一个请求和一个响应消息。因此每一个“in/out”顺序的消息就表明一个请求/响应模式的web服务操作。

  • "portType"部分,该部分以命名的操作描述了服务。服务操作的名称是在web服务方法的注解@WebMethods中被指定的,后面将会介绍。web服务 "portType"部分等同Java web服务接口,用来抽象地描述服务,而不包括服务实现细节。

  • 绑定(Binding)部分,本部分是WSDL定义从抽象到具体的描述,同样,WSDL绑定部分可以看作java web服务接口的实现。WSDL绑定部分描述了服务的一些比较重要的实现细节。

    • 在绑定部分指明了发送和接收基于SOAP消息所使用的传输协议。通信协议有可能是HTTP,或者是SMTP这些应用层协议,也就是要实现web服务调用所采用的SOAP消息传输协议。HTTP在实际应用中通常是主流选择。比如TimeServer服务中WSDL包括如下xml片段:

      <soap:binding style="RPC" transport="http://achemas.xmlsoap.org/soap/http">

      transport属性值指明该服务的SOAP消息将通过HTTP发送和接收。

    • 服务的绑定样式,我们 前面已经接触过,style属性可以分别取值“rpc”和“document”。其中style的默认值是“document”,这也就可以说明为什么在前面TimeServer服务的SEI中指定如下注解属性:

      @SOAPBinding(style = Style.RPC)

      这个注解使得在产生的WSDL文档中style属性值为rpc。我们将在后面介绍style分别取值为rpc和document时的区别。

    • SOAP消息中使用的数据(编码)格式有两种,分别是“literal”和“encoded”。后面会对这两种消息格式做清晰的介绍。

  • 服务(service)部分指定了一个或多个端点,端点中描述了服务的功能,以及服务所包括的所有操作。从技术上看,服务部分包括一个或多个port(端口)元素,一个port元素包括portType(接口)及与之对应的binding(接口实现)。

转载于:https://my.oschina.net/fhd/blog/208862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值