Как написать клиент Java для доступа к файлу WSDL? - PullRequest
5 голосов
/ 16 августа 2010

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

Ответы [ 7 ]

13 голосов
/ 16 августа 2010

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

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 затем генерирует все необходимые классы, а также класс, содержащий методы для всех методов ваших веб-сервисов.

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

5 голосов
/ 18 августа 2010

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

В Netbeans, шаги:

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

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

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

5 голосов
/ 16 августа 2010

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

В Java 6 вытакже может генерировать Java-клиент тоже.В JDK / bin есть wsimport для генерации клиента веб-службы или в Axis, есть WSDL2Java , который делает то же самое, что и wsimport.

2 голосов
/ 17 июня 2011

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

1 голос
/ 16 августа 2010

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

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

0 голосов
/ 20 апреля 2017

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

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

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

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

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

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

0 голосов
/ 23 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...