第 4 章 定义逻辑接口


摘要

逻辑服务接口使用 portType 元素来定义。

概述

逻辑服务接口使用 WSDL portType 元素来定义。portType 元素是抽象操作定义的集合。每个操作都由用于完成操作所代表的事务的输入、输出和错误消息定义。当生成代码来实现由 portType 元素定义的服务接口时,每个操作都会转换为包含合同中指定的输入、输出和故障消息定义的参数的方法。

Process

要在 WSDL 合同中定义逻辑接口,您必须执行以下操作:

  1. 创建一个 portType 元素,使其包含接口定义,并为它赋予一个唯一的名称。请参阅 “端口类型”一节
  2. 为接口中定义的每个操作创建一个 operation 元素。请参阅 “操作”一节
  3. 对于每个操作,指定用于表示操作的参数列表、返回类型和例外的消息。请参阅 “操作消息”一节

端口类型

WSDL portType 元素是逻辑接口定义中的 root 元素。虽然许多 Web 服务实现将 portType 元素直接映射到生成的实现对象,但逻辑接口定义不指定实施服务提供的确切功能。例如,名为 ticketSystem 的逻辑接口可能会导致一个实施,该实施销售证书票据或问题解析票据。

portType 元素是 WSDL 文档的单元,它映射到绑定中,以定义端点公开定义的服务所使用的物理数据。

WSDL 文档中的每个 portType 元素都必须具有唯一的名称,该名称使用 name 属性指定,并且由一组操作组成,这些操作元素在操作元素中描述。WSDL 文档可描述任意数量的端口类型。

操作

使用 WSDL 操作 元素定义的逻辑操作定义两个端点之间的交互。例如,对检查帐户平衡的请求和小部件的顺序都可以定义为操作。

portType 元素中定义的每个操作都必须具有唯一的名称,使用 name 属性指定。定义操作需要 name 属性。

操作消息

逻辑操作由一组元素组成,代表端点之间进行通信的逻辑消息来执行操作。可以描述操作的元素列在 表 4.1 “操作消息元素” 中。

表 4.1. 操作消息元素
元素描述

输入

指定在发出请求时客户端端点发送到服务提供商的消息。此消息的部分对应于操作的输入参数。

output

指定服务提供商发送到客户端端点以响应请求的消息。此消息的部分内容与服务提供商可以更改的任何操作参数对应,如通过引用传递的值。这包括操作的返回值。

fault

指定用于在端点之间传达错误条件的消息。

至少需要一个 输入 或一个 output 元素操作。一个操作可以同时具有 输入和输出 元素,但它只能有一个。不需要操作具有任何 fault 元素,但可以根据需要具有任意数量的 fault 元素。

这些元素在 表 4.2 “输入和输出元素的属性” 中列出的两个属性。

表 4.2. 输入和输出元素的属性
属性描述

name

标识消息,以便在将操作映射到 concrete 数据格式时引用它。名称在括起端口类型中必须是唯一的。

message

指定描述要发送或接收数据的抽象信息。message 属性的值必须与 WSDL 文档中定义的其中一个抽象消息的 name 属性对应。

不需要为所有 输入和输出 元素指定 name 属性;WSDL 根据操作的名称提供默认的命名方案。如果操作中只使用一个元素,则元素名称默认为操作的名称。如果使用了 输入和输出 元素,则元素名称默认为操作的名称,并分别附加 RequestResponse

返回值

由于 operation 元素是操作期间传递的数据的一个抽象定义,因此 WSDL 不提供为操作指定的返回值。如果方法返回值,它将映射到 output 元素中作为该消息的最后一部分。

示例

例如:您可能有一个类似于 例 4.1 “personalInfo 查找接口” 中显示的接口。

例 4.1. personalInfo 查找接口

interface personalInfoLookup
{
  personalInfo lookup(in int empID)
  raises(idNotFound);
}

这个接口可以映射到 例 4.2 “personalInfo 查找端口类型” 中的端口类型。

例 4.2. personalInfo 查找端口类型

<message name="personalLookupRequest">
  <part name="empId" element="xsd1:personalLookup"/>
<message/>
<message name="personalLookupResponse">
  <part name="return" element="xsd1:personalLookupResponse"/>
<message/>
<message name="idNotFoundException">
  <part name="exception" element="xsd1:idNotFound"/>
<message/>
<portType name="personalInfoLookup">
  <operation name="lookup">
    <input name="empID" message="tns:personalLookupRequest"/>
    <output name="return" message="tns:personalLookupResponse"/>
    <fault name="exception" message="tns:idNotFoundException"/>
  </operation>
</portType>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.