Присоединяемся к новому SOAP веб-сервису, генерируем по wsdl java классы и… опять ничего не работает

Ваш отзыв

soap ошибка

Добрый день, уважаемые читатели блога! Информация для данной статья у меня лежала почти месяц. Не было ни единого момента, когда бы я могла приступить к непосредственому написанию даже такой небольшой статьи. Вот так бывает… В рамках некоторого проекта требовалось присоединиться к нескольким SOAP веб-сервисам из java-кода. Необходимо было сгенерировать по wsdl java классы и работать с ними из имеющегося кода. Вроде ничего необычного, да? Однако проблема состояла в том, что служб, к которым требовалось подключиться, было несколько, и в них использовались классы с одинаковыми именами. В результате работы утилиты wsimport возвращалась ошибка «A class/interface with the same name «className» is already in use», проект, естественно, не собирался. Подключились…

Для начала на всякий случай опишу процедуру подключения к SOAP веб-сервису из Netbeans. Вдруг неожиданно кому-нибудь понадобится.

Подключение к SOAP веб-сервису из Netbeans

Нажимаем в IDE Netbeans сочетание клавиш Ctrl + N или нажимаем на кнопку «Создать файл…» в тулбаре.

подключиться к soap веб-сервису

В левом списке открывшегося окна выбираем «Веб-службы», в правом — «Клиент веб-службы».

soap клиент

Затем нажимаем кноку «Далее». В следующем окне мастера нам необходимо указать файл WSDL веб-службы. В моем конкретном случае надо было выбрать вариант WSDL URL.

wsdl java

Как правило, URL выглядит примерно так (использован пример адреса веб-сервиса от Microsoft):

http://example.com/service.asmx?wsdl

Финальный аккорд — нажатие на кнопку «Готово».

Исправление ошибки генерации по WSDL классов Java

После подключения к SOAP веб-службе и попытке собрать проект мы, повторюсь, получаем ошибку «A class/interface with the same name «className» is already in use».

Есть неколько описанных в Интернете рецептов, как бороться с данным недугом, но самый простой из них предлагает IDE Netbeans, в которой и был открыт наш проект. Чтобы им воспользоваться, переходим на вкладку «Проект», раскрываем меню «Ссылки на веб-службы».

netbeans список сервисов

Затем кликаем правой кнопкой мыши по сервису, в котором есть те самые повторяющиеся классы, в открывшемся контекстном меню выбираем пункт «Правка атрибутов веб-службы».

Перед нами возникнет окно из трех вкладок, нам нужна последняя — «Параметры wsimport».

jaxb параметрыВ нижней части окна есть список, который озаглавлен как «Параметры Jaxb (xjc)». Он-то нам и нужен !

Нажимаем на кнопку «Добавить», находящуюся справа от этого списка. В списке появится новая строка с полями «параметр-значение». В колонку «Параметр» пишем «value», в «Значение» — «-XautoNameResolution», как на скриншоте, затем нажимаем «ОК». Пробуем собрать проект и… вуаля, должно все получиться. В выводе сборки проекта мы должны увидеть, что утилита wsimport отработала с параметром -XautoNameResolution, чего и требовалось добиться.

Теперь не по теме. Взглянула я в код одного старого проекта и за короткий период времени сочинила стихотворение на базе всем-всем известной песни :

Такого говнокода, такого говнокода
Давно не помнят здешние места…
А прод не знал и падал,
А прод не знал и падал…
Возня была напрасна,
пустая суета…
Сайт крушится, летает, летает,
И ошибками клубя,
Затирает в БД, затирает
Все, что было там вчера…


Оставьте комментарий

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> <img src="" alt="" class="" width="" height="">

Нажимая кнопку "Отправить комментарий", Вы автоматически соглашаетесь с политикой конфиденциальности и даете свое согласие на обработку персональных данных. Ваши данные не будут переданы третьим лицам.

http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ab.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ac.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ag.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ah.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ai.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ak.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/am.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/an.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ao.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/aq.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ar.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/at.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/av.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/aw.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ay.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/az.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bb.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bc.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bd.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/be.gif 
больше...