【问题标题】:WSDL and AXIS ADBWSDL 和 AXIS ADB
【发布时间】:2015-04-11 08:29:03
【问题描述】:

如果我在WSDL 文档中理解正确,我们可以简单地说:

  • portype section: 可以比作 OO 中的接口
    语言,并描述服务提供的操作。

  • binding section: 指定操作可以通过哪些协议访问
    (例如 SMTP、HTTP 等)。

  • services section: 表示每个已定义绑定的端点。

如果我说错了,请纠正我。

如果正确,当我们使用 AXIS ADB 和 Eclipse EE 集成的 AXIS 工具创建客户端时,为什么在实例化存根时还需要提供 URL 作为服务的端点?

MultiplierImplStub stub=newMultiplierImplStub("http://localhost:8080/ProductServer/services/MultiplierImpl");

解析服务的 WSDL 自动构建的存根不应该已经知道端点是什么吗?

编辑:

以及为什么客户端中指定的端点与WSDL中定义的任何端点都不匹配?

<wsdl:service name="MultiplierImpl">
<wsdl:port name="MultiplierImplHttpSoap11Endpoint" binding="ns:MultiplierImplSoap11Binding">
<soap:address location="http://localhost:8080/AxisTestProjectServer/services/MultiplierImpl.MultiplierImplHttpSoap11Endpoint/"/>
</wsdl:port>
<wsdl:port name="MultiplierImplHttpSoap12Endpoint" binding="ns:MultiplierImplSoap12Binding">
<soap12:address location="http://localhost:8080/AxisTestProjectServer/services/MultiplierImpl.MultiplierImplHttpSoap12Endpoint/"/>
</wsdl:port>
<wsdl:port name="MultiplierImplHttpEndpoint" binding="ns:MultiplierImplHttpBinding">
<http:address location="http://localhost:8080/AxisTestProjectServer/services/MultiplierImpl.MultiplierImplHttpEndpoint/"/>
</wsdl:port>
</wsdl:service>

【问题讨论】:

    标签: java web-services soap wsdl axis


    【解决方案1】:

    好问题!存根在生成时就知道端点是什么,但在未来这些端点可能会发生变化,您不想重新手动重新生成存根并重新部署它,而只是更改配置参数你的申请。在运行时使用每个服务调用重新生成存根也不是一个好主意,我相信你会同意的。

    能够提供端点很方便,原因有很多:有时您在实施时无法实时访问 Web 服务,而 WSDL 被用作双方团队在工作开始前的相互协议。此时可能会知道最终 URL。此外,您可能需要在预生产和生产之前在不同的环境中进行测试 - 这很容易通过触摸配置来实现,而不是在每个环境的应用程序中使用不同的存根和不同的逻辑。

    WSDL 中的端点对于 Web 服务的可发现性非常有用,因为服务已经在生产中,而端点的更改预计不会发生。它简化了新客户使用 Web 服务的过程。但即便如此,最好将端点视为一个变量,因为它增加了灵活性,以防万一。

    【讨论】:

    • 我看到了,但我有点困惑。你不是说你提供了有问题的 URL 吗?如果 URL 已经为您自动填写好了,可能是您的配置不匹配。
    • 我在实例化存根时自己提出了问题的 URL,我也有点困惑。我还注意到删除该 URL 没有任何区别,客户端总是可以正常工作。
    • 好吧,也许有一个默认端点 URL,它是在您生成存根时设置的(它取自 WSDL - 如果存根知道端点,它会回答您的问题)。当您删除手动输入的 URL 时,它会进入默认值。更仔细地研究生成的代码,看看它是如何获取端点地址的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多