📜  UDDI-接口(1)

📅  最后修改于: 2023-12-03 15:05:42.132000             🧑  作者: Mango

UDDI 接口介绍

什么是 UDDI 接口?

UDDI 全称 Universal Description, Discovery and Integration,即通用描述、发现和集成,是一个由多个公司共同开发的、基于 XML 的标准。

UDDI 接口是一种服务注册表,提供了一种机制,使企业能够发布其网络服务并使其可被发现。该接口是一种分布式、分层的体系结构,用于描述、发现和集成 Web 服务。通过 UDDI 接口,您可以按照自己的需求发现并重新使用现有的 Web 服务。

UDDI 接口的优点

UDDI 接口具有以下优点:

  • 服务注册表:UDDI 提供了一个服务注册表,使企业能够发布其网络服务并使其可被发现,从而为企业提供了更加广泛的业务和更强的市场竞争力。
  • 与语言和平台无关:UDDI 模型和元值使用 XML 格式,因此可以轻松地跨语言和平台移植。
  • 易于集成:UDDI 接口与其他标准协议,如 SOAP、WSDL 等具有良好的集成性,使得在复杂的企业集成环境中使用更加容易。
UDDI 接口的组成部分

UDDI 接口主要有以下三个组成部分:

  1. UDDI 注册表 - 注册表用于存储 Web 服务的信息,可以通过 UDDI API 进行访问。注册表通常由一个或多个 Web 服务提供商(WSRP)维护。

  2. UDDI 发现API - UDDI API 用于访问注册表,并查找 Web 服务。

  3. UDDI 发布API - 发布 API 用于将 Web 服务信息发布到 UDDI 注册表中。

UDDI 接口的架构

UDDI 架构由以下三个主要组件组成:

  1. UDDI 注册服务器 - 注册服务器是存储 Web 服务元数据和商业注册信息的 Web 服务。

  2. UDDI 报告器 - 报告器是一组 Web 服务,负责定期从注册服务器获取信息,以便构建 Web 目录。

  3. UDDI 客户端库 - 客户端库是 UDDI 程序所需的 Web 服务客户端程序。

示例代码

以下是使用 UDDI API 访问注册表并查询 Web 服务的示例代码:

import org.uddi.api_v3.*;
import org.uddi.v3_service.*;

import javax.xml.ws.BindingProvider;
import java.net.URL;
import java.util.List;

public class UDDIClient {

    public static void main(String[] args) throws Exception {

        // UDDI 服务的 URL
        URL url = new URL("http://localhost:8080/uddi/inquiry");

        // 创建 UDDI 客户端
        UDDIInquiryPortType uddiClient = new UDDIInquiryService(url).getUDDIInquiryPort();

        // 设置认证信息
        ((BindingProvider) uddiClient).getRequestContext()
                .put(BindingProvider.USERNAME_PROPERTY, "username");
        ((BindingProvider) uddiClient).getRequestContext()
                .put(BindingProvider.PASSWORD_PROPERTY, "password");

        // 创建查找请求
        FindService findService = new FindService();
        FindQualifiers findQualifiers = new FindQualifiers();
        findQualifiers.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
        findService.setFindQualifiers(findQualifiers);
        Name searchName = new Name();
        searchName.setValue("%weather%");
        findService.getName().add(searchName);

        // 发送查找请求
        ServiceList foundServices = uddiClient.findService(findService);
        if (foundServices == null) {
            System.out.println("No services found");
            return;
        }

        // 输出查找到的服务
        List<ServiceInfo> serviceInfos = foundServices.getServiceInfos().getServiceInfo();
        for (ServiceInfo serviceInfo : serviceInfos) {
            System.out.println("Service name: " + serviceInfo.getName().getValue());
            System.out.println("Service URL: " + serviceInfo.getServiceDetail().get(0).getWSDLBinding().get(0).getAccessPoint().getValue());
        }

    }
}
总结

UDDI 接口是一种服务注册表,提供了一种机制,使企业能够发布其网络服务并使其可被发现。通过 UDDI 接口,您可以按照自己的需求发现并重新使用现有的 Web 服务,从而为企业提供了更加广泛的业务和更强的市场竞争力。