У меня есть веб-сервис, управляемый 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
или на другое значение?