Клиент Java Webservice (лучший способ)

У меня есть сторонний WSDL, мне нужно написать код на Java для клиента веб-службы, чтобы вызывать операции в стороннем WSDL. Прямо сейчас я сгенерировал клиентскую заглушку с помощью инструмента WSDL2JAVA от Axis и использовал XMLbeans для привязки данных.

  1. Как лучше всего сделать эту JAVA?
  2. Я читал о SAAJ, похоже, это будет более детальный подход?
  3. Есть ли другой способ, кроме использования WSDL2Java, для генерации кода. Может быть wsimport в другом варианте. Каковы плюсы и минусы?
  4. Может ли кто-нибудь прислать ссылки на несколько хороших руководств по этим темам?
  5. Какие параметры нам нужно использовать при генерации кода с помощью WSDL2Java?

Изначально я использовал некоторые базовые вещи. Теперь у меня есть эти варианты

C:\axis2-1.5.1\bin>wsdl2java -uri  mywsdlurl  -o client -p somepackage -d xmlbeans -s -t -ssi

person Java Guy    schedule 27.08.2010    source источник


Ответы (4)


Как лучше всего сделать эту JAVA?

Я бы лично НЕ использовал Axis 2, даже только для разработки на стороне клиента. Вот почему я избегаю этого:

  1. Мне не нравится его архитектура и не нравится его контрпродуктивная модель развертывания.
  2. Я считаю, что это некачественный проект.
  3. Мне не нравится его производительность (см. этот тест против JAX-WS RI).
  4. Установка зависимостей всегда кошмар (я использую Maven, и мне всегда приходится бороться с множеством зависимостей) (см. №2)
  5. Axis - отстой, и Axis2 не лучше. Нет, это не личное мнение, есть консенсус.
  6. Я страдал один раз, больше никогда.

Единственная причина, по которой Axis все еще существует, - это IMO, потому что она используется в Eclipse с давних времен. Слава богу, это было исправлено в Eclipse Helios, и я надеюсь, что Axis2 наконец умрет. Есть просто стеки намного лучше.

Я читал о SAAJ, похоже, это будет более детальный подход?

Сделать что?

Есть ли другой способ, кроме использования WSDL2Java, для генерации кода. Может быть wsimport в другом варианте. Каковы плюсы и минусы?

Да! Предпочитайте стек JAX-WS, например CXF или JAX-WS RI (вы также можете прочитать о Metro, Metro = JAX-WS RI + WSIT), они просто более элегантны, проще и проще в использовании. В вашем случае я бы просто использовал JAX-WS RI, который включен в Java 6 и, следовательно, wsimport.

Может ли кто-нибудь прислать ссылки на несколько хороших руководств по этим темам?

Это еще один профессионал, есть много (хорошего качества) руководств по JAX-WS, см., Например:

Какие параметры нам нужно использовать при генерации кода с помощью WSDL2Java?

Нет вариантов, используйте wsimport :)

Смотрите также

Связанные вопросы

person Pascal Thivent    schedule 28.08.2010
comment
Отличная работа, спасибо. Не могли бы вы также сделать WSIT ссылкой на его описание (например, на download.oracle.com/docs/cd/E17802_01/webservices/webservices/) - person dma_k; 26.09.2010
comment
@dma_k Готово, добавил ссылку на проект WSIT (тот, который вы опубликовали, тоже хороший, так что у читателей есть и то, и другое). - person Pascal Thivent; 26.09.2010
comment
Я давным-давно поставил вам +1 по этому поводу, даже не переходя по всем ссылкам. Человек жив, этот желчный блог ударил его по носу! :) Еще раз спасибо за это. - person javamonkey79; 10.12.2010
comment
Вы говорите, что оси больше нет в Гелиосе - что ее заменило? - person javamonkey79; 10.12.2010
comment
Похоже на CXF - теперь, чтобы чертова вещь заработала :( stackoverflow.com/questions/4406752/ - person javamonkey79; 10.12.2010
comment
+1 для Apache CXF, только что создал рабочий код клиента, который использует существующую веб-службу TIBCO. Удачи, чтобы документы CXF стали еще лучше! - person thirdy; 20.07.2011
comment
+1 для JAX-WS. Потеряли много дней с Axis2 ... полное MESS (не говоря уже о множестве зависимостей) - person marcolopes; 13.12.2012
comment
@PascalThivent: Почему JAXWS лучше, чем Axis2 при разработке на стороне клиента, если не считать, что Axis2 имеет множество зависимостей? Пожалуйста, не поймите меня неправильно. Мне нравится JAXWS. Фактически, это то, что я использую прямо сейчас. Но JAXWS требует много времени, чтобы загрузить свои прокси, потому что он должен сначала прочитать всевозможные вещи из файла WSDL. Прокси-серверы JAXWS также не являются потокобезопасными. Таким образом, наличие одного прокси-сервера для всего приложения не вариант. Создание пула прокси также может потреблять много ресурсов. Есть ли решение для этого на JAXWS? - person Arci; 28.02.2013
comment
@PascalThivent: я хочу использовать JAXWS для клиента, но меня беспокоит проблема безопасности потоков в JAXWS. - person Arci; 28.02.2013
comment
Привет, Паскаль, связь Глена Маззы прервана. - person Adeel Ansari; 15.06.2016
comment
@AdeelAnsari Я пробовал пользоваться интернет-архивами, но это не сработало из-за файла robots.txt. Вот альтернативная ссылка: web-gmazza.rhcloud.com/blog/ запись / мыло-клиент-руководство - person k427h1c; 20.06.2016
comment
Спасибо, @KarthicRaghupathi. Заменил оригинал на этот. - person Adeel Ansari; 21.06.2016
comment
Потратил почти полтора дня на то, чтобы заставить axis2 работать в моем приложении, половина из них возилась с исключениями maven и пыталась выяснить, как переопределить значения по умолчанию, чтобы заставить httpclient 4 работать. У меня был клиент, уже созданный из wsimport, который, как я ошибочно подумал, лучше преобразовать в axis2. Ух ... Я уверен, что в этом есть свои плюсы, но человек о человек ... для простого мыльного клиента это перебор. - person David; 08.09.2016

У меня был хороший успех, используя Spring WS для клиентской части приложения веб-службы - см. http://static.springsource.org/spring-ws/sites/1.5/reference/html/client.html

В моем проекте используется комбинация:

  • XMLBeans (сгенерированный из простого задания Maven с использованием xmlbeans-maven-plugin)

  • Spring WS - использование marshalSendAndReceive () сокращает код до одной строки для отправки и получения

  • some Dozer - отображение сложных XMLBeans на простые bean-компоненты для клиентского графического интерфейса.

person Steve    schedule 27.08.2010

Здесь вы можете найти некоторые ресурсы, связанные с разработкой клиента веб-сервисов с использованием Apache axis2.

http://today.java.net/pub/a/today/2006/12/13/invoking-web-services-using-apache-axis2.html

Ниже приведены подробные объяснения разработки веб-сервисов с использованием Apache axis2.

http://www.ibm.com/developerworks/opensource/library/ws-webaxis1/

http://wso2.org/library/136

person aravindaM    schedule 25.03.2012

Некоторые идеи в следующем ответе:

Шаги по созданию веб-службы с использованием Axis2 - Клиентский код

Дает пример клиента Groovy, вызывающего классы ADB, созданные из WSDL.

Существует множество фреймворков для веб-сервисов ...

person Mark O'Connor    schedule 28.08.2010