使用Maven生成WSDL存根
- Maven
- java
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服務客戶端,並使用生成的類來調用我們的服務。