“统一描述、发现和集成”(UDDI)规范定义了发布和发现关于 Web service 的信息的方式。UDDI 有两种功能:(1) 它是一种基于 SOAP 的协议,该协议定义客户机如何与 UDDI 注册中心进行通信。(2) 它是一组特殊的全局复制注册中心。
注册服务涉及到四种核心的数据结构类型:
有关 UDDI 数据类型的更多信息,请参阅此主题结尾部分的相关参考主题。
Web 服务描述语言(WSDL)是用于描述 Web service 的基于 XML 的标准规范。WSDL 将用于描述网络服务的 XML 格式定义为一组端点,这组端点是对包含面向文档或面向过程信息的消息进行操作的。
可使用许多方法来组织 WSDL 服务描述。但是,为了帮助在 UDDI 注册中心中发布和查找 WSDL 服务描述,WSDL 文档由两个主要部分组成:
如果使用 Apache Axis 运行时环境来创建 Web service,Web service 工具会在从 Java™ bean 或 EJB 生成 Web service 时创建单个 WSDL 文档。此 WSDL 文档同时包含服务接口和实现文档。
服务接口是由包含 types、import、message、portType 和 binding 元素的 WSDL 文档描述的。服务接口包含将用来实现一个或多个服务的 WSDL 服务定义。它是 Web service 的抽象定义,并且用来描述特定类型的服务。此文档可以使用 import 元素来引用另一个服务接口文档。此产品中的 Web service 工具生成一个服务接口文档,该文档只包含由绑定文档(该绑定文档只包含 portType 的绑定)所引用的消息和 portType 元素。
服务实现文档包含一些服务元素。服务实现文档包含对实现服务接口的服务的描述。至少有一个 import 元素将包含对 WSDL 服务接口文档的引用;但是,那些使用 Axis 运行时环境创建的单一 WSDL 将不包含任何导入。服务实现文档可以包含对多个服务接口文档的引用。
服务提供者主管 Web service,并使用诸如 SOAP/HTTP 和 SOAP/JMS 之类的协议以便可访问 Web service。Web service 由存储在提供者的服务器上或存储在特殊存储库中的 WSDL 文档进行描述。WSDL 文档由 UDDI 业务服务(服务文档)和 tModel(绑定文档)引用。这些指针使服务请求者能够发现 Web service。
图 1. UDDI 与 WSDL 之间的关系。
图 1 说明了 UDDI 与 WSDL 之间的关系。WSDL service 元素引用 WSDL binding 元素。包含 WSDL binding 元素的文档的 URL 是作为 tModel 发布到 UDDI 业务注册中心的。包含 WSDL service 元素的文档的 URL 是作为 businessService 发布到 UDDI 业务注册中心的,并且它包含有关 bindingTemplate 的信息。有关 UDDI 注册中心数据结构类型的更多信息,请参阅此文档结尾部分的相关参考部分。注意,根据运行时环境的不同,该图的导入部分是可选的;那些使用 Axis 运行时环境创建的单一 WSDL 将不包含任何导入。
服务实现描述服务的一个实例。该实例是使用 WSDL service 元素定义的。服务实现文档中的 service 元素用来发布 UDDI businessService。当发布 WSDL 服务描述时,在将服务实现作为 businessService 发布之前必须将服务接口作为 tModel 来发布。
服务实现是作为具有一个或多个 bindingTemplate 元素的 businessService 的一部分在 UDDI 注册中心中发布的。businessService 是由服务提供者发布的。为在服务实现文档中定义的 service 元素创建新的 businessService。在 businessService 内为 service 元素内定义的每个 port 元素创建新的 bindingTemplate 元素。
有关 WSDL 与 UDDI 之间的关系的更多信息,请参阅 uddi.org/bestpractices.html。