2014-01-02 5 views
2

Всякий раз, когда я пытаюсь создать веб-сервис из URL-адреса wsdl, я получаю окно ошибки в среде Netbeans IDE. Там, где нет пакета или ссылки, как это.Клиент Web-сервиса не может быть создан JAXWS: утилита wsimport

enter image description here

Вот мой трассировки стека.

parsing WSDL... 

[ERROR] класс/интерфейс с таким же именем "org.wi.link.action.Exception" уже используется. Используйте настройку класса для разрешения этого конфликта. линия 35 файла:/D: /Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ ОШИБКА] (Соответствующая выше ошибка) здесь генерируется другое «Исключение». линия 30 файла:/D: /Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ ОШИБКА] Два объявления вызывают столкновение в классе ObjectFactory. линия 35 файла:/D: /Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ ERROR] (Связано с вышеуказанной ошибкой) Это другое объявление.
линия 30 файла:/D: /Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ОШИБКА] Два объявления приводят к столкновению в классе ObjectFactory. линия 38 файла:/D: /Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ ERROR] (Связано с вышеуказанной ошибкой) Это другое объявление.
строка 32 файла:/D: /Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

D: \ Разработка \ источник \ WebServiceProject \ TestProject \ nbproject \ JAXWS-build.xml: 225: wsimport не удалось BUILD FAILED (общее время: 2 секунды)

Я могу также разместить JAXWS-build.xml, если требуется Спасибо заранее.

ответ

3

Под капотом wsimport utinilty использует компилятор JAXB, поэтому актуальная ошибка относится к JAXB. Как указано в JAXB guide, у вас есть два варианта - используйте schemabindings или customMetod customization, хотя это зависит от вашего WSLD, и это может быть невозможно. Другой вариант - переименовать конфликтующие типы в документе WSDL.

на основе комментариев ниже позволяет предположить, что это ваша схема:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="Exception"> 
     <xs:sequence> 
      <xs:element minOccurs="0" name="Exception" nillable="true" type="xs:anyType"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:element name="Exception"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element minOccurs="0" name="Exception" nillable="true" type="Exception"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

Чтобы gernerate же ошибки, вы можете запустить XJC компилятор:

/bin/xjc.sh schema.xsd 

Как упоминалось выше easyest способ исправить этот вопрос будет переименовать сложный тип или имя элемента.Но чтобы сделать вещи более интересным вы можете определить JAXB настройки

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    version="1.0"> 
    <jaxb:bindings schemaLocation="schema.xsd"> 
    <jaxb:bindings node="//xs:complexType[@name='Exception']"> 
     <jaxb:factoryMethod name="TypeException"/> 
     <jaxb:class name="TypeException" /> 
    </jaxb:bindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

И попробуйте еще раз:

/bin/xjc.sh -b binding.xml schema.xsd 

же связывание может подаваться wsimport утилита:

wsimport myService.wsdl -b binding.xml 
+0

Я попытался создать клиент webservice в новом проекте, но ошибка остается прежней :( – mgk22

+0

Это может помочь, если вы можете разместить хотя бы часть документа WSDL, относящегося к вашей проблеме (строки 30-38). –

+0

< хз: ComplexType имя = "Исключение"> <хз: элемент MinOccurs = имя "0" = "Исключение" nillable = "истинный" тип = "хз: anyType" /> <хз: элемент имя = "Исключение"> <хз: ComplexType> <хз: элемент MinOccurs = имя "0" = "Exception" nillable = "истинный" тип = "нс: Exception" /> mgk22

2

Webservice не может быть создан с wsdl, только клиент webservice (для потребления WS) может быть создан с помощью wsdl.

Для меня проблема решена, по ошибке я добавлял «Клиент веб-сервиса» с неправильным URL-адресом wsdl, добавлял http://localhost:8080/MyService/MyService?Tester, который является URL-адресом тестера ws.

Правильный URL должен быть WSDL URL т.е. http://localhost:8080/MyService/MyService?WSDL

Выполняемые: 1. Перейдите к Project войны 2. Щелкните правой кнопкой мыши New> WebService клиента 3. Выберите WSDL URL, вставьте URL-адрес WSDL, дать имя пакета

И его сделали :)

Для меня проблема решена.

Вы можете создавать WS только с нуля или из существующих компонентов.

Надеюсь, это вам поможет.

Смежные вопросы