gpt4 book ai didi

java - 为什么 Java 客户端在运行时需要 WSDL?

转载 作者:行者123 更新时间:2023-12-04 19:14:17 26 4
gpt4 key购买 nike

在为 Java WS 客户端生成工件之后,

  • 为什么需要 wsdllocation 引用?
  • 为什么在运行时需要 WSDL?

  • 我可能会看到一些验证的原因,但这不应该是可选的吗?

    最佳答案

    简介: 虽然从设计的角度来看,Web 服务客户端不需要 WSDL,但 Sun 对 Web 服务客户端的实现对 WSDL 有很强的依赖性。明显的目的是动态生成一些运行时依赖项。

    首先:如果您希望生成一个可移植的客户端,打包您的 WSDL 并引用它被认为是一种很好的做法。

    现在,除此之外,如果实现生成了所有必需的运行时工件,则不需要 WSDL。

    对于 Java,wsimport 工具会生成一些静态工件(接口(interface)和可能的支持代码以满足性能目标),并让其他元素在运行时动态创建。从一开始,我们就看到 WSDL 文档在 Service 构造函数中占据主要位置:

    protected Service(java.net.URL wsdlDocumentLocation, QName serviceName)
    delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
    serviceName,
    this.getClass());
    }

    WSDL 文档被解析为 source数据流;如果未提供,则默认为(提取核心本质的自由):

    source = new StreamSource( ... webserviceclient.wsdlLocation() ... );



    并深入挖掘到 WSServiceDelegate:
    WSDLModelImpl wsdlmodelimpl = parseWSDL(url, source);
    wsdlserviceimpl = wsdlmodelimpl.getService(serviceName);

    它至少动态地创建了部分底层服务支持。

    wsdlLocation 是 Java 实现的组成部分。

    关于java - 为什么 Java 客户端在运行时需要 WSDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11712178/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com