WSDL 文档结构
WSDL 文档是利用这些主要的元素来描述某个 web service 的:
元素 定义
<portType> web service 执行的操作
<message> web service 使用的消息
<types> web service 使用的数据类型
<binding> web service 使用的通信协议
一个 WSDL 文档的主要结构是类似这样的:
<definitions>
<types>
definition of types........
</types>
<message>
definition of a message....
</message>
<portType>
definition of a port.......
</portType>
<binding>
definition of a binding....
</binding>
</definitions>WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。
如需完整的语法概述,请访问 WSDL 语法 这一节。
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。
它可描述一个 web service、可被执行的操作,以及相关的消息。
可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。
WSDL 消息
<message> 元素定义一个操作的数据元素。
每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
WSDL types
<types> 元素定义 web service 使用的数据类型。
为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。
WSDL Bindings
<binding> 元素为每个端口定义消息格式和协议细节。
WSDL 实例
这是某个 WSDL 文档的简化的片段:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
在这个例子中,<portType> 元素把 "glossaryTerms" 定义为某个端口的名称,把 "getTerm" 定义为某个操作的名称。
操作 "getTerm" 拥有一个名为 "getTermRequest" 的输入消息,以及一个名为 "getTermResponse" 的输出消息。
<message> 元素可定义每个消息的部件,以及相关联的数据类型。
对比传统的编程,glossaryTerms 是一个函数库,而 "getTerm" 是带有输入参数 "getTermRequest" 和返回参数 getTermResponse 的一个函数。
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。
它可描述一个 web service、可被执行的操作,以及相关的消息。
端口定义了指向某个 web service 的连接点。可以把该元素比作传统编程语言中的一个函数库(或一个模块、或一个类),而把每个操作比作传统编程语言中的一个函数。
操作类型
请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型:
类型 定义
One-way 此操作可接受消息,但不会返回响应。
Request-response 此操作可接受一个请求并会返回一个响应
Solicit-response 此操作可发送一个请求,并会等待一个响应。
Notification 此操作可发送一条消息,但不会等待响应。
One-Way 操作
一个 one-way 操作的例子:
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >在这个例子中,端口 "glossaryTerms" 定义了一个名为 "setTerm" 的 one-way 操作。
这个 "setTerm" 操作可接受新术语表项目消息的输入,这些消息使用一条名为 "newTermValues" 的消息,此消息带有输入参数 "term" 和 "value"。不过,没有为这个操作定义任何输出。
Request-Response 操作
一个 request-response 操作的例子:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>在这个例子中,端口 "glossaryTerms" 定义了一个名为 "getTerm" 的 request-response 操作。
"getTerm" 操作会请求一个名为 "getTermRequest" 的输入消息,此消息带有一个名为 "term" 的参数,并将返回一个名为 "getTermResponse" 的输出消息,此消息带有一个名为 "value" 的参数。
绑定到 SOAP
一个 请求 - 响应 操作的例子:
<message name="getTermRequest">
<part name="term" type="xs:string" />
</message>
<message name="getTermResponse">
<part name="value" type="xs:string" />
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest" />
<output message="getTermResponse" />
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation
soapAction="http://example.com/getTerm" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>binding 元素有两个属性 - name 属性和 type 属性。
name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口,在这个例子中是 "glossaryTerms" 端口。
soap:binding 元素有两个属性 - style 属性和 transport 属性。
style 属性可取值 "rpc" 或 "document"。在这个例子中我们使用 document。transport 属性定义了要使用的 SOAP 协议。在这个例子中我们使用 HTTP。
operation 元素定义了每个端口提供的操作符。
对于每个操作,相应的 SOAP 行为都需要被定义。同时您必须如何对输入和输出进行编码。在这个例子中我们使用了 "literal"。
分享到:
相关推荐
在本文中,我们将详细介绍 Java2WSDL 和 WSDL2Java 的使用方法和参数设置。 Java2WSDL Java2WSDL 是一个命令行工具,用于将 Java 类转换为 WSDL 文件。其主要参数包括: * -o:输出 WSDL 文件的名称 * -l:访问的...
本篇文章将详细介绍`wsdl2java`命令的使用方法以及相关的Axis插件知识。 **一、 Axis简介** Apache Axis是最早的Java Web服务实现之一,它提供了用于创建、部署和调用Web服务的一系列工具。 Axis的核心功能包括: ...
本文将详细介绍如何编写一个简单的 WSDL 文件,以及如何根据该 WSDL 文件来编写服务器端与客户端的代码,并最终实现 Web Service 的发布过程。 ### WSDL 文件概述 WSDL 文件分为两个主要版本:WSDL 1.1 和 WSDL ...
本文将详细介绍如何使用SoapUI与WSDL文件相结合进行接口测试的方法,特别关注于如何通过Eclipse或PHP_ZendStudio生成WSDL文件。 #### 二、什么是WSDL文件? WSDL(Web Services Description Language)是一种基于...
本篇将详细介绍如何利用“WSDL客户端生成工具”来简化开发过程,以及与之相关的知识点。 一、WSDL简介 WSDL是Web服务的核心规范之一,它定义了服务的位置、使用的消息协议以及服务提供的操作。通过WSDL,开发者可以...
本文将详细介绍如何在Eclipse中使用wsdl文件生成Java客户端。 首先,让我们了解什么是wsdl文件。Wsdl(Web Services Description Language)是一种基于XML的语言,用于描述Web服务的接口。它提供了关于Web服务的...
本文将详细介绍这两个工具的使用方法及其参数说明,并提供一个具体的示例。 #### 二、Java2WSDL概述 Java2WSDL 工具用于根据Java类自动生成WSDL文件。这对于想要快速创建Web服务接口的开发者来说非常有用。生成的...
本文将详细介绍三种基于WSDL生成WebService服务端的方法:使用`wsdl2java`命令、通过SOAPUI工具及借助MyEclipse的Web Service项目功能。 #### 方法一:使用`wsdl2java`命令生成 `wsdl2java`是Apache CXF提供的一个...
本文将详细介绍如何使用Axis工具根据WSDL文件生成Java Web服务,并提供生成后的调用方法。 首先,我们需要理解WSDL文件。WSDL是一种XML格式的规范,用于描述Web服务的接口,包括服务提供的操作、消息结构、地址以及...
在XML方式下,WSDL文件通常包含了服务接口的详细描述,包括输入、输出参数和操作的定义。 **描述分析:** 由于描述信息为空,我们无法直接获取具体的博客内容,但通常涉及“WSDL的XML方式删除操作”,博主可能讨论...
当我们只有WSDL离线文件时,仍可以调用Web Service接口,下面将详细介绍这一过程。 首先,理解WSDL文件的结构至关重要。WSDL文件主要包含以下几个部分: 1. **服务定义(Service)**:定义了Web服务的端点,即服务...
本文将详细介绍如何在Eclipse环境中,利用WSDL文件逆向生成WebService客户端项目的源码。 首先,WSDL文件是一个XML格式的文档,它描述了Web服务的接口、操作、消息格式以及服务的位置。这个文件是服务提供者发布的...
本文将详细介绍如何使用XFire根据WSDL文件生成客户端代码,以便快速地与Web服务进行交互。 首先,我们需要了解WSDL文件的结构。一个WSDL文件通常包含以下关键元素: 1. **服务(Service)**:定义服务的位置,即...
本文将详细介绍如何使用Axis2 1.6.2版本来生成基于WSDL的Web服务客户端代码。 首先,了解WSDL(Web Service Description Language)是什么至关重要。WSDL是一种XML格式的规范,用于描述Web服务及其接口。它定义了...
本文将详细介绍一种解决方法,并通过具体的示例来展示这一过程。 #### 二、问题背景与分析 在Java开发中,泛型集合是一种非常常见的数据结构,它提供了灵活的数据组织方式。然而,当需要将包含泛型集合的Java对象...
**在“理解UDDI注册中心的WSDL”文档中**,可能详细介绍了如何使用UDDI来注册和查找具有WSDL定义的服务。文档可能涵盖了以下内容: 1. **UDDI注册过程**:如何创建UDDI注册项,包括企业、服务和绑定的定义。 2. **...
本教程将详细介绍如何使用Axis2快速发布自己的WSDL(Web Service Definition Language)服务。 首先,我们需要理解WSDL是什么。WSDL是一种XML格式的规范,用于定义Web服务接口,包括服务的位置、提供的操作以及如何...
下面将详细介绍如何在Delphi 2005中导入WSDL并利用其功能。 1. **理解WSDL**: WSDL文件描述了Web服务的端点(地址)、操作(方法)、输入和输出消息格式。它是服务提供者和消费者之间的契约,使得开发者可以无需...
本文主要介绍了如何使用Zend Studio for Eclipse生成WSDL文件,并利用PHP编写和调用Web Service。以下是详细步骤及关键知识点: 1. **Web Service基础**:Web Service是一种基于互联网的、平台无关的交互方式,允许...
在描述中提到的“博文链接:https://zhouyq.iteye.com/blog/366921”,这可能是一个博客文章,详细介绍了如何使用Apache Axis从WSDL文件生成Java客户端代码的步骤。虽然具体内容未给出,但通常这样的教程会涵盖以下...