Перейти к основному содержимому

Создание заглушек WSDL с помощью Maven

· 3 мин. чтения

1. Введение

В этом руководстве мы покажем, как настроить подключаемый модуль JAX-WS maven для создания классов Java из файла WSDL (язык описания веб-сервисов). В результате мы сможем легко вызывать веб-сервисы, используя сгенерированные классы.

2. Настройка нашего плагина Maven

Во-первых, давайте включим наш плагин JAX-WS Maven с целью wsimport в раздел плагинов сборки нашего файла pom.xml :

<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 и создает все необходимые артефакты для разработки, развертывания и вызова веб-службы.

2.1. Конфигурация каталога WSDL

В нашем разделе подключаемых модулей Maven свойство конфигурации wsdlDirectory сообщает подключаемому модулю, где расположены наши файлы WSDL . В этом примере мы укажем подключаемому модулю получить все файлы WSDL в каталоге src/main/resources нашего проекта :

<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. Конфигурация URL-адресов WSDL

Кроме того, мы можем настроить свойство конфигурации плагина wsdlUrl :

<plugin>
...
<configuration>
<wsdlUrls>
<wsdlUrl>http://localhost:8888/ws/country?wsdl</wsdlUrl>
...
</wsdlUrls>
</configuration>
</plugin>

Чтобы использовать эту опцию, сервер, на котором размещается URL-адрес файла WSDL, должен быть запущен и работать, чтобы наш подключаемый модуль мог его прочитать .

2.4. Настройка каталога сгенерированных классов

Затем в свойстве packageName мы можем настроить имя пакета сгенерированных классов, а в sourceDestDir — выходной каталог:

<plugin>
...
<configuration>
<packageName>com.foreach.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.foreach.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/foreach/tutorials/maven-modules/maven-plugins/jaxws/src/main/resources/country.wsdl
[INFO] jaxws:wsimport args: [-keep, -s, 'D:\projetos\foreach\tutorials\maven-modules\maven-plugins\jaxws\target\generated-sources', -d, 'D:\projetos\foreach\tutorials\maven-modules\maven-plugins\jaxws\target\classes', -encoding, UTF-8, -Xnocompile, -p, com.foreach.soap.ws.client, "file:/D:/projetos/foreach/tutorials/maven-modules/maven-plugins/jaxws/src/main/resources/country.wsdl"]
parsing WSDL...
Generating code...

4. Проверьте сгенерированные классы

После запуска нашего плагина мы можем проверить вывод в папке target/generated-sources , настроенной в свойстве sourceDestDir .

Сгенерированные классы можно найти в com.foreach.soap.ws.client , как настроено в свойстве packageName :

com.foreach.soap.ws.client.Country.java
com.foreach.soap.ws.client.CountryService.java
com.foreach.soap.ws.client.CountryServiceImplService.java
com.foreach.soap.ws.client.Currency.java
com.foreach.soap.ws.client.ObjectFactory.java

5. Вывод

В этой статье мы увидели, как создавать классы Java из файла WSDL с помощью подключаемого модуля JAX-WS. В результате теперь мы можем создать клиент веб-службы и использовать сгенерированные классы для вызова наших служб.

Исходный код нашего приложения доступен на GitHub .