У меня есть веб-служба, управляемая JAX-WS-, из WSDL которой мы генерируем клиент веб-службы в другом модуле Maven (, который я назову ws-consumer
).
К лучшему или к худшему, мы копируем «опубликованные WSDL» (версию WSDL и XSD, которые служба хранила/генерировала на момент выпуска)в нашу src/wsdl
папку ws-consumer
, а затем используйте jaxws-maven-plugin
из org.jvnet для создания клиента с использованием jaxws:wsimport
со следующей (усеченной)конфигурацией:
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<!--phase>generate-sources</phase -->
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlDirectory>src/main/resources/META-INF/wsdl/</wsdlDirectory>
<wsdlFiles>
<wsdlFile>MyWS/MyWS.wsdl</wsdlFile>
</wsdlFiles>
</configuration>
</execution>
</executions>
</plugin>
Теперь сгенерированный клиентский код имеет следующие аннотации, примененные на уровне класса:
@WebServiceClient(name = "MyWS", targetNamespace = "http://myws/blah", wsdlLocation = "**file:/C:/some/absolute/path/src/main/resources/META-INF/wsdl/MyWS/MyWS.wsdl"**)
акцент мой
Надеюсь, вы видите, что значение атрибута wsdlLocation
имеет жестко-закодированный абсолютный путь, который будет неправильным при развертывании службы.
Можно ли каким-либо образом «контролировать» это, установив для него просто META-INF/wsdl/MyWS/MyWS.wsdl
или другое значение?