автономный клиент веб-сервиса Java - PullRequest
7 голосов
/ 08 сентября 2010

Я новичок в веб-сервисах в целом. Я пытаюсь написать автономный клиент Java, который может получить ответ от веб-службы.

Я пытался искать SO и Google, но теперь я запутался. Ниже приведены ссылки, которые я пролистал.

У меня есть такой URL: http://api.something.com/remote/wsdl/SomeEncryptedText

У меня также есть SOAP-запрос, например:

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
<soap12:Body> 
<AuthUsername>someName@someWhere.com</AuthUsername> 
<AuthPassword>mypassword</AuthPassword> 
<Sid>12121</Sid> 
<DynamicProductFeedsRequest xmlns="http://api.something.com/remote/SomeEncryptedText"> 
</DynamicProductFeedsRequest> 
</soap12:Body> 
</soap12:Envelope> 

Итак, как мне написать автономный Java-клиент, который я бы хотел интегрировать в какое-то веб-приложение на более позднем этапе?

Из упомянутых ранее ресурсов представлен широкий выбор программ: SoapUI, WSDL2Java, Apache Axis, Maven Plugin, JAX-WS, Apache CXF.

Я использовал http://www.soapclient.com/soaptest.html в одном из ответов SO, упомянутых выше, и я могу получить идеальный файл html / xml в браузере.

Теперь я не понимаю, какое программное обеспечение мне следует использовать? Информация в ссылках немного разбита на кусочки, которые я не могу сопоставить друг с другом, так как ничего не знаю в SOA.

Может ли кто-нибудь сказать мне, какие шаги предпринимаются при написании автономного Java-клиента, который принимает URL-адрес WSDL и запрос SOAP и выдает мне его вывод?

Пожалуйста, дайте мне знать, если я пропустил какую-либо информацию.

1 Ответ

10 голосов
/ 08 сентября 2010

Этот вопрос все зависит от следующего:

  • Версия JDK вашего компилятора Java.
  • Ваша версия WSDL (есть 1.0, 1.2 и 2.0).

По сути, если вы используете аннотации Java для создания веб-сервисов, то вам потребуются связанные с Java 5 библиотеки веб-сервисов (которые поддерживают аннотации).

Некоторые статьи об использовании веб-служб Java с аннотациями (JAX-WS):

Я начну с создания клиента Web-сервиса с Java, который не поддерживает аннотации. Хорошо известным клиентом, генерирующим WSDL для Java, является Apache Axis (последняя версия 1.4 выпущена 22 апреля 2006 года). Это в основном берет определение WSDL и генерирует его обратно клиенту. Он поддерживает старую версию WSDL (1.0) и аварийно завершает работу, если вы используете более новые версии WSDL (1.2 и 2.0).

Что это в основном делает, он берет ваш WSDL и генерирует Java-прокси, который связывается с вашей веб-службой. Он может разрешать связь как на основе RPC, так и на основе XML.

Для Java, который поддерживает аннотации, есть два способа сделать это:

  • Использование собственной команды Java wsimport (исполняемый файл находится в папке JDK_HOME/bin/).
  • Использование сторонних библиотек, таких как Apache Axis 2 (который эффективно заменяет Apache Axis и поддерживает WSDL версии 2.0) или Apache CXF (который поддерживает WSDL до 1.2).

Чтобы использовать wsimport, вам в основном нужно перейти к команде оболочки (или написать скрипт) и эффективно сделать что-то из этого:

wsimport -d [outputdir] wsdl_file

и ваш java-прокси будет найден в папке [outputdir].

wsimport находится в JDK 1.6 (я не знаю, существует ли он в более ранних версиях). Больше источника здесь и здесь .

Для Apache Axis, Apache Axis 2 или Apache CXF существует файл класса WSDL2Java, который выполняет генерацию исходного кода.

Вот руководство по использованию WSDL2Java в Apache CXF и в Apache Axis 2 .

Надеюсь, это поможет вам так же, как я потратил 30 минут на работу, занимаясь этим. : -)

...