Начнем с конфигурации wadl-client-plugin
, которая правильно работает на Java 8 (при условии, что я добавил файл jaxp.properties
в JDK, как задокументировано здесь):
<plugin>
<groupId>org.jvnet.ws.wadl</groupId>
<artifactId>wadl-client-plugin</artifactId>
<version>1.1.6</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<targets>
<target>http://127.0.0.1:8080/sigb/rest/application.wadl</target>
</targets>
<packageName>sigb.ws</packageName>
<autopackaging>true</autopackaging>
<customizations>
<customization>${basedir}/src/main/resources/bindings.xjb</customization>
</customizations>
<customClassNames>
<property>
<name>http://127.0.0.1:8080/sigb/rest/</name>
<value>SigbWsClient</value>
</property>
</customClassNames>
<generationStyle>jaxrs20</generationStyle>
</configuration>
</plugin>
Как можно догадаться из вышеизложенного, мой WADL генерируется Джерси, который является вспомогательной структурой, которую я использовал для разработки своего REST-приложения.
При переходе на Java 9 или 10, конечно, мне нужно добавить зависимости для JAXB, который по умолчанию больше недоступен. Я добавил следующее к приведенной выше конфигурации:
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0.1</version>
</dependency>
</dependencies>
Теперь JAXB терпит неудачу из-за пространства имен, которое Джерси (по праву) включает в генерируемый им WADL. Ошибка описана следующим образом (я перевела сообщения с французского, поэтому они могут не совсем совпадать с оригинальной английской версией):
[ERROR] Failed to execute goal org.jvnet.ws.wadl:wadl-client-plugin:1.1.6:generate (default) on project sigbws-bul-ws-client: Failed to generate sources from http://127.0.0.1:8080/sigb/rest/application.wadl.
Internal error: unexpected element (URI : "http://wadl.dev.java.net/2009/02", local : "application"). Expected elements are <{}application>,<{}doc>,<{}grammars>,<{}include>,<{}link>,<{}method>,<{}option>,<{}param>,<{}representation>,<{}request>,<{}resource>,<{}resource_type>,<{}resources>,<{}response> -> [Help 1]
Если кто-нибудь знает об этой ошибке, любая помощь будет принята с благодарностью.
Заранее спасибо...