搜索

第 28 章 从 WSDL 合同开发消费者

download PDF

摘要

创建使用者的一种方法是从 WSDL 合同开始。该合同定义了消费者发出请求的服务的操作、消息和传输详细信息。消费者的起点代码是从 WSDL 合同生成的。消费者所需的功能将添加到生成的代码中。

28.1. 生成 Stub Code

概述

cxf-codegen-plugin Maven 插件从 WSDL 合同中生成存根代码。stub 代码提供了在远程服务上调用操作所需的支持代码。

对于消费者,cxf-codegen-plugin Maven 插件会生成以下类型的代码:

  • stub 代码 - 支持实施消费者的文件。
  • 起始点代码 - 示例代码连接到远程服务,并调用远程服务中的每个操作。

生成消费者代码

生成消费者代码,请使用 cxf-codegen-plugin Maven 插件。例 28.1 “消费者代码生成” 显示如何使用代码生成器来生成消费者代码。

例 28.1. 消费者代码生成

<plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>${cxf.version}</version>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
        <sourceRoot>outputDir</sourceRoot>
        <wsdlOptions>
          <wsdlOption>
            <wsdl>wsdl</wsdl>
            <extraargs>
              <extraarg>-client</extraarg>
            </extraargs>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

其中 outputDir 是生成文件放置的目录位置,而 wsdl 指定 WSDL 合同的位置。client 选项为 消费者的 main () 方法生成起点代码。

有关 cxf-codegen-plugin Maven 插件可用参数的完整列表,请参阅 第 44.2 节 “cxf-codegen-plugin”

生成的代码

代码生成插件为 例 26.1 “helloworld WSDL 合同” 中显示的合同生成以下 Java 软件包:

  • org.apache.hello_world_soap_http - 这个软件包是从 http://apache.org/hello_world_soap_http 目标命名空间生成的。此命名空间中定义的所有 WSDL 实体(例如,Greeter 端口类型和 SOAPService 服务)都映射到 Java 类此 Java 软件包。
  • org.apache.hello_world_soap_http.types - 这个软件包是从 http://apache.org/hello_world_soap_http/types 目标命名空间中生成的。此命名空间中定义的所有 XML 类型(即,HelloWorld 合同合同下的 wsdl:types 元素)映射到此 Java 包中的 Java 类。

cxf-codegen-plugin Maven 插件生成的 stub 文件属于以下类别:

  • 代表 org.apache.hello_world_soap_http 包中的 WSDL 实体的类。生成的以下类来表示 WSDL 实体:

    • Greeter - 代表 Greeter wsdl:portType 元素的 Java 接口。在 JAX-WS 术语中,此 Java 接口是服务端点接口(SEI)。
    • SOAPService - Java 服务类(extending javax.xml.ws.Service),代表 SOAPService wsdl:service 元素。
    • PingMeFault - Java 异常类(extending java.lang.Exception)代表 pingMeFault wsdl:fault 元素。
  • 代表 org.objectweb.hello_world_soap_http.types 软件包中的 XML 类型的类。在 HelloWorld 示例中,唯一生成的类型是请求和回复消息的各种打包程序。其中一些数据类型对异步调用模型很有用。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.