拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 使用Maven生成WSDL存根

使用Maven生成WSDL存根

白鹭 - 2021-11-24 466 0 0

1.简介

在本教程中,我们将展示如何配置JAX-WS maven插件以从WSDL(Web服务描述语言)文件生成Java类。结果,我们将能够使用生成的类轻松调用Web服务。

2.配置我们的Maven插件

pom.xml文件的build plugins部分中将wsimport目标的JAX-WS Maven插件包括在内:

<build>

 <plugins>

 <plugin>

 <groupId>org.codehaus.mojo</groupId>

 <artifactId>jaxws-maven-plugin</artifactId>

 <version>2.6</version>

 <executions>

 <execution>

 <goals>

 <goal>wsimport</goal>

 </goals>

 </execution>

 </executions>

 </plugin>

 </plugins>

 </build>

简而言之, wsimport目标生成用于JAX-WS客户端和服务的JAX-WS可移植工件。该工具读取WSDL文件并生成Web服务开发,部署和调用所需的所有工件。

2.1。 WSDL目录配置

在我们的Maven插件部分中, wsdlDirectory配置属性会通知插件WSDL文件所在的位置。在此示例中,我们将告诉插件在项目的src/main/resources目录中获取所有WSDL文件:

<plugin>

 ...

 <configuration>

 <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>

 </configuration>

 </plugin>

2.2。 WSDL目录特定的文件配置

另外,我们可以使用wsdlFiles配置属性来定义生成类时要考虑的WSDL文件列表:

<plugin>

 ...

 <configuration>

 <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>

 <wsdlFiles>

 <wsdlFile>file1.wsdl</wsdlFile>

 <wsdlFile>file2.wsdl</wsdlFile>

 ...

 </wsdlFiles>

 </configuration>

 </plugin>

但是,如果wsdlFiles属性,则将考虑wsdlDirectory属性指定的目录中的所有文件

2.3。 WSDL URL配置

或者,我们可以配置插件的wsdlUrl配置属性:

<plugin>

 ...

 <configuration>

 <wsdlUrls>

 <wsdlUrl>http://localhost:8888/ws/country?wsdl</wsdlUrl>

 ...

 </wsdlUrls>

 </configuration>

 </plugin>

要使用此选项,托管WSDL文件URL的服务器必须已启动并正在运行,以便我们的插件可以读取它

2.4。配置生成的类目录

接下来,在packageName属性中,我们可以设置生成的类的包名称,并在sourceDestDir ,设置输出目录:

<plugin>

 ...

 <configuration>

 <packageName>com.baeldung.soap.ws.client</packageName>

 <sourceDestDir>

 ${project.build.directory}/generated-sources/

 </sourceDestDir>

 </configuration>

 </plugin>

wsdlDirectory选项的插件配置的最终版本为:

<plugin>

 <groupId>org.codehaus.mojo</groupId>

 <artifactId>jaxws-maven-plugin</artifactId>

 <version>2.6</version>

 <executions>

 <execution>

 <goals>

 <goal>wsimport</goal>

 </goals>

 </execution>

 </executions>

 <configuration>

 <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>

 <packageName>com.baeldung.soap.ws.client</packageName>

 <sourceDestDir>

 ${project.build.directory}/generated-sources/

 </sourceDestDir>

 </configuration>

 </plugin>

3.运行JAX-WS插件

最后,配置好我们的插件后,我们可以使用Maven生成我们的类并检查输出日志:

mvn clean install
[INFO] --- jaxws-maven-plugin:2.6:wsimport (default) @ jaxws ---

 [INFO] Processing: file:/D:/projetos/baeldung/tutorials/maven-modules/maven-plugins/jaxws/src/main/resources/country.wsdl

 [INFO] jaxws:wsimport args: [-keep, -s, 'D:\projetos\baeldung\tutorials\maven-modules\maven-plugins\jaxws\target\generated-sources', -d, 'D:\projetos\baeldung\tutorials\maven-modules\maven-plugins\jaxws\target\classes', -encoding, UTF-8, -Xnocompile, -p, com.baeldung.soap.ws.client, "file:/D:/projetos/baeldung/tutorials/maven-modules/maven-plugins/jaxws/src/main/resources/country.wsdl"]

 parsing WSDL...

 Generating code...

4.检查生成的类

运行插件后,我们可以检查sourceDestDir属性中target/generated-sources中的输出。

生成的类中可以找到com.baeldung.soap.ws.client作为已配置packageName属性:

com.baeldung.soap.ws.client.Country.java

 com.baeldung.soap.ws.client.CountryService.java

 com.baeldung.soap.ws.client.CountryServiceImplService.java

 com.baeldung.soap.ws.client.Currency.java

 com.baeldung.soap.ws.client.ObjectFactory.java

5.结论

在本文中,我们看到了如何使用JAX-WS插件从WSDL文件生成Java类。结果,我们现在能够创建一个Web服务客户端,并使用生成的类来调用我们的服务。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *