Как написать клиент Java для доступа к файлу WSDL?

Как я могу получить доступ к открытым методам в файле .wsdl с помощью Java? Кроме того, каковы шаги, связанные с написанием Java-клиента и потреблением веб-сервисов?

Ответ 1

В дополнение к Ответ Elite Gentleman, вот мои шаги, которые я успешно использовал для создания классов, чтобы иметь возможность использовать веб-сервис: Команда:

wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl

Пояснение:

  • '- Xnocompile' подавляет генерацию файлов .class
  • '- keep' гарантирует, что сгенерированные файлы Java не будут удалены (по умолчанию остаются только файлы .class)
  • '- b' указывает файл конфигурации привязки. Это необходимо! (см. ниже).

У меня была проблема, что классы Java содержали классы оболочки JAXBElement<Type>. Поэтому вместо члена класса типа String я бы получил тип JAXBElement<String>, который ужасно использовать. С помощью переключателя -b для wsimport и следующего файла binding.xml вы получите правильные типы:

<jaxb:bindings version="2.0"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jaxb:bindings>
        <jaxb:globalBindings generateElementProperty="false" />
    </jaxb:bindings>
</jaxb:bindings>

Надеюсь, это поможет. wsimport затем генерирует все необходимые вам классы, а также класс, содержащий методы для всех ваших методов веб-сервисов.

По умолчанию эти методы не имеют таймаута чтения (говорящие проблемы с сетью при запросе...), см. здесь для вопроса, который у меня был тогда.

Ответ 2

Вам нужно будет создать прокси-сервер Java из файла WSDL. Вы можете сделать это, используя Apche CXF или Apache Axis/Axis2 для создания Java-прокси/Java-клиента.

В Java 6 вы также можете создать java-клиент. На JDK/bin там wsimport для создания клиента Web-сервиса или в Axis, там WSDL2Java, который делает то же самое, что и wsimport.

Ответ 3

Я бы посмотрел, чтобы ваша среда IDE автоматически генерировала все.

В Netbeans следующие шаги:

Щелкните правой кнопкой мыши на своем проекте, нажмите "добавить клиента веб-сервиса", введите URL-адрес WDSL и нажмите "Готово".

Это автоматически создаст прокси-сервер Java для вас.

Чтобы реализовать клиент в своем коде, перетащите требуемый метод (расположенный в ссылках на веб-службы в проект) в свой код.

Ответ 4

Используйте wsimport -keep, который даст вам все классы. Затем напишите другой класс сервиса и скопируйте весь метод из созданного класса сервиса. Передайте свой собственный класс обслуживания wsgen -keep -p. Он предоставит вам необходимые классы-оболочки (jax-ws), которые вы собираетесь вернуть из методов вызова делегата.

Ответ 5

Я бы посоветовал начать с Web-Explorer Explorer в Eclipse Java EE. Это позволяет вам исследовать любой веб-сервис, предоставляемый WSDL.

Инструкции по преобразованию WSDL в Java зависят от того, какую библиотеку веб-сервисов вы хотите использовать. Если вы используете Java 6, встроен Metro-стек.

Ответ 6

soapUI является одним из программных средств, позволяющих вам легко попасть в мир WSDL/SOAP. Вы можете генерировать SOAP-запросы с тестовыми значениями, которые должны быть отправлены на сервер. Вы также можете увидеть ответы сервера SOAP. Это позволит вам понять немного больше WSDL/SOAP. Для генерации java-кода из wsdl см. Рекомендации выше.

Ответ 7

Теперь это просто, когда вы используете вашу среду IDE. Давайте возьмем netbeans как наш образец.

  • Открыть netbeans
  • создайте новый проект, щелкнув файл и выбрав новый проект
  • выберите java под категорией и java-приложение в приложениях
  • щелкните правой кнопкой мыши ваш новый проект и выберите новый и выберите веб-сайт. клиент обслуживания.
  • Netbeans будет запрашивать местоположение WSDL и клиента

    [wsdl и расположение клиента] [1]

      [1]: https://i.stack.imgur.com/yWQZv.png
    
  • выберите WSDL и введите URL-адрес в местоположение WSDL

  • нажмите "Готово" и все методы будут созданы для вас

Ваша задача здесь - вызвать методы и передать параметры