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

83

У меня есть сторонний 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
Java Guy
источник

Ответы:

164

Как лучше всего сделать эту 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:)

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

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

Паскаль Тивент
источник
4
Отличная работа, спасибо. Не могли бы вы также сделать WSIT ссылку на его описание (например, на download.oracle.com/docs/cd/E17802_01/webservices/webservices/… )
dma_k
@dma_k Готово, добавил ссылку на проект WSIT (тот, который вы опубликовали, тоже хороший, так что у читателей есть оба).
Паскаль Тивент,
1
Я давным-давно поставил вам +1, даже не переходя по всем ссылкам. Человек жив, этот желчный блог попадает ему в нос! :) Еще раз спасибо за это.
javamonkey79
1
+1 для JAX-WS. Потеряли много дней с Axis2 ... полное MESS (не говоря уже о тонне зависимостей)
marcolopes
1
Привет, Паскаль, связь с Гленом Мазза прервана.
Adeel Ansari
8

Мне удалось успешно использовать 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-компоненты для клиентского графического интерфейса

Стив
источник
1

Здесь вы можете найти некоторые ресурсы, связанные с разработкой клиента веб-сервисов с использованием 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

АравиндаМ
источник