Относительный путь для WSDL в клиенте веб-службы CXF

В моем приложении я использую много веб-сервисов. Поскольку WSDL не меняется, я интегрировал файлы WSDL в свой проект. Если я использую инструмент WSDL2Java из CXF, абсолютный путь к местоположениям WSDL жестко запрограммирован.

Теперь мой вопрос: как изменить параметр «wsdlocation» в аннотации @WebserviceClient на относительный путь?

Вот пример:

@WebServiceClient(name = "Time", 
                  wsdlLocation = "file:/C:/Users/dominik/Documents/NetBeansProjects/Webservices/src/wsdl/Time.wsdl" ) /*I want this path to be relative */
public class Time extends Service {

person Dominik Obermaier    schedule 02.12.2010    source источник


Ответы (3)


Сегодня я наконец-то понял, как это сделать правильно. Просто поместите файлы в свою папку ресурсов, а затем вы можете использовать wsdlLocation для ссылки на них примерно так:

<wsdlLocation>classpath:wsdl/myservice.wsdl</wsdlLocation>

См. мой ответ на аналогичный вопрос здесь: https://stackoverflow.com/a/9875701/1190144

person Kyle    schedule 26.03.2012
comment
Объедините ‹wsdl› с ‹wsdlLocation›, потому что, если вы используете его, только ‹wsdlLocation› не работает! - person bl4ckr0se; 24.04.2020

Вот что можно сделать для создания пустого местоположения wsdl

<wsdlOptions>
  <wsdlOption>
    <wsdl>${basedir}/src/main/wsdl/service.wsdl</wsdl>
    <extraargs>
      <extraarg>-wsdlLocation</extraarg>
      <wsdlurl />
    </extraargs>
  </wsdlOption>
</wsdlOptions>

Затем клиент может получить местоположение wsdl в качестве аргумента и стать переносимым клиентом. Вот почему я искал относительный путь: создать портативный клиент

person Camilo Silva    schedule 07.03.2012
comment
Позаботьтесь о том, чтобы при этом методе не использовались политики, присутствующие в WSDL. - person Abbadon; 07.10.2015

Инструмент wsdl2java имеет флаг -wsdlLocation, который можно использовать для указания точной строки, которая там находится.

person Daniel Kulp    schedule 02.12.2010
comment
Думаю, я недостаточно ясно выразился. Я хочу установить для wsdlLocation относительный путь. - person Dominik Obermaier; 08.12.2010