当前位置: 首页 > 知识库问答 >
问题:

WSDL 和 AXIS ADB

龙学
2023-03-14

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

>

  • portype部分:可以与OO
    语言中的接口进行比较,并描述服务提供的操作。

    绑定部分:指定可以通过
    访问操作的协议(例如SMTP、HTTP等)。

    服务部分:指示定义的每个绑定的终结点。

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

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

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

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

    编辑:

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

    <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>
    
  • 共有1个答案

    裴承安
    2023-03-14

    问得好!存根在生成时知道终结点是什么,但再往前走,这些终结点可能会更改,并且您不希望手动重新生成存根并重新部署它,而只是更改应用程序中的配置参数。在运行时为每个服务调用重新生成存根也不是一个好主意,我相信你会同意的。

    由于多种原因,能够提供endpoint非常方便:有时您在实现时无法实时访问web服务,并且在工作开始之前,WSDL被用作双方团队之间的相互协议。此时可能会知道最终的URL。此外,在预生产和生产之前,您可能需要在不同的环境上进行测试-这可以很容易地在配置中进行,而不是在每个环境的应用程序中使用不同的存根和不同的逻辑。

    WSDL 中的endpoint非常适合在服务已在生产环境中时(当endpoint不会发生更改时)的 Web 服务可发现性。它简化了新客户端使用 Web 服务的过程。但即便如此,最好将endpoint视为变量,因为增加了灵活性,以防万一。

     类似资料:
    • 在上一章Spring -WS - First Application中 ,我们使用Spring WS Configuration自动生成了WSDL。 在这种情况下,我们将展示如何使用Spring WS公开现有的WSDL。 步 描述 1 在Spring WS-First Application章节中解释,在com.wenjiangs包下创建一个名为leaveService的项目。 2 在/ WEB-

    • 许多编程API和测试工具广泛支持。 但仍然没有得到很好的支持,即使规范从2007年就已经开始引入。 以下是使用和测试的编程API和测试工具的列表: API/工具 版本 年份 WSDL 1.1 WSDL 2.0 SoapUI 5.2.0 2018 Yes No PHP SOAP扩展 7.0.2 2015 Yes No Perl SOAP::Lite 1.27 2017 Yes No Apache A

    • 虽然我已经与他们互动多年,但我对WSDL设计非常陌生。我有一个 WSDL,我正在尝试与 Camel 一起使用 我试图实现的是对SOAP客户端的自定义响应字符串,并将SOAP请求转换为JSON,并将其推送到websocketsendpoint。 我的WSDL模式在代码生成时生成响应类,但是响应似乎从来没有在调试器中被调用过。 此外,如果我删除Camel中的json转换器,整个soap请求将返回给SO

    • 最初的WSDL 2.0语言规范(2007年发布在 http://www.w3.org/TR/wsdl20/ )分为两部分:核心和附件 - 核心 - 由URI表示为:http://www.w3.org/ns/wsdl - 定义核心语言,该语言可用于基于服务提供的抽象模型来描述Web服务。 SOAP附件 - 为这些区域定义扩展语言: 消息交换模式 - 定义操作中列出的抽象消息的序列和基数。 预定义模式

    • 有几种从wsdl生成java类的方法,例如Apache CXF、JAXB和JAX-WS。 我需要一个解决方案,工作与maven和曲库文件。 我的问题是,我有两个Maven模块A和B。其中一个模块(模块A)包含逻辑类,另一个模块(模块B)包含作为资源的xsd文件。现在我想从逻辑模块(模块A)生成类,xsd文件不应该作为资源添加到此模块。 我已经创建了一个catalag。包含公共名称空间并指向mave

    • 下面给出了一个WSDL文件,用于演示简单的WSDL程序。 假设这个服务提供了一个名称为的公共可用函数。 此函数需要单个字符串参数并返回单个字符串问候语。 例如,如果传递参数值为:,那么服务函数将返回问候语:。 示例 HelloService.wsdl 文件的内容如下所示 - 示例分析说明 定义 - 类型 - 使用内置数据类型,它们在XMLSchema中定义。 消息 - - 参数 - 问候的返回值