Как я могу получить доступ к открытым методам в файле .wsdl
с помощью Java? Кроме того, каковы шаги, связанные с написанием Java-клиента и потреблением веб-сервисов?
Как написать клиент Java для доступа к файлу WSDL?
Ответ 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
-
нажмите "Готово" и все методы будут созданы для вас
Ваша задача здесь - вызвать методы и передать параметры