27.2. 生成 Starting Point Code
概述
JAX-WS 指定从 WSDL 中定义的服务到将服务实施为服务提供商的 Java 类的详细映射。由 wsdl:portType
元素定义的逻辑接口映射到服务端点接口(SEI)。WSDL 中定义的任何复杂类型都会映射到 Java 类,遵循用于 XML Binding(JAXB)规格的 Java 架构定义的映射。由 wsdl:service
元素定义的端点也会生成成 Java 类,供使用者用于访问实施该服务的服务提供商。
cxf-codegen-plugin
Maven 插件生成此代码。它还为您提供了为实施生成起始点代码的选项。代码生成器提供了控制生成的代码的多个选项。
运行代码生成器
例 27.1 “服务代码生成” 演示了如何使用代码生成器为服务生成起点代码。
例 27.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>-server</extraarg> <extraarg>-impl</extraarg> </extraargs> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin>
这会执行以下操作:
-
impl 选项为
WSDL 合同中的每个wsdl:portType
元素生成 shell 实施类。 -
server 选项生成
一个简单的main()
,以将您的服务提供商作为独立应用程序运行。 -
sourceRoot
指定生成的代码被写入名为 outputDir 的目录。 -
WSDL 元素指定
从中生成代码的 WSDL 合同。
有关代码生成器选项的完整列表请参考 第 44.2 节 “cxf-codegen-plugin”。
生成的代码
表 27.1 “为服务提供商生成的类” 描述为创建服务提供商生成的文件。
File | 描述 |
---|---|
SEI.此文件包含您的服务提供商实现的接口。您不应该编辑这个文件。 | |
| 端点。此文件包含用于在服务上发出请求的 Java 类消费者。 |
框架实施类。修改此文件以构建您的服务提供商。 | |
| 允许您将服务提供商部署为独立进程的基本服务器主要线。更多信息请参阅 第 31 章 发布服务。 |
此外,代码生成器会为 WSDL 合同中定义的所有类型生成 Java 类。
生成的软件包
生成的代码会根据 WSDL 合同中使用的命名空间放入软件包中。为支持服务(基于 wsdl:portType
元素)、wsdl:service
元素和 wsdl:port
元素生成的类被放在软件包中,基于 WSDL 合同的目标命名空间。根据 type 元素的 targetNamespace
属性,为实施合同元素中定义的 类型
指定的类放置在软件包中。
映射算法如下:
-
领先的
http://
或urn://
将从命名空间剥离。 -
如果命名空间中的第一个字符串是有效的互联网域,例如,以
.com
或.gov
结束,那么前导www.
将从字符串中剥离,并且两个剩余的组件都是软盘。 -
如果命名空间中的最终字符串以
.xxx
或.xx
模式的文件扩展名结尾,则会剥离扩展。 - 命名空间中的其余字符串附加到生成的字符串中,并以点分开。
- 所有字母均由小写。