Ошибка при использовании Jax для создания клиента веб-службы Proxy - PullRequest
5 голосов
/ 02 июня 2011

Мне было интересно, смогу ли я получить помощь по следующей проблеме.

Я пытался запустить команду ниже, используя jax для генерации прокси клиента веб-сервиса:

wsimport http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

но я получаю следующую ошибку:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Asher>wsimport http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL
parsing WSDL...


[WARNING] src-resolve.4.2: Error resolving component 's:schema'. It was detected that 's:schema' is in namespace 'http:/
/www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'http://www.h
olidaywebservice.com/Holidays/HolidayService.asmx?WSDL#types?schema1'. If this is the incorrect namespace, perhaps the p
refix of 's:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be ad
ded to 'http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL#types?schema1'.
  line 15 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL#types?schema1

[ERROR] undefined element declaration 's:schema'
  line 15 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

[ERROR] undefined element declaration 's:schema'
  line 36 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

[ERROR] undefined element declaration 's:schema'
  line 74 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

[ERROR] undefined element declaration 's:schema'
  line 97 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

[ERROR] undefined element declaration 's:schema'
  line 120 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

[ERROR] undefined element declaration 's:schema'
  line 131 of http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL


C:\Users\Asher>

Прежде всего, я что-то делаю неправильно? И, наконец, если нет способа сгенерировать прокси-клиент, есть ли другой способ доступа к этому веб-сервису и его методам в java. Я новичок в Java, поэтому любая помощь будет принята с благодарностью.

Спасибо

Ответы [ 2 ]

11 голосов
/ 11 сентября 2012

Вы можете передать XMLschema в качестве параметра в wsimport

wsimport -b  http://www.w3.org/2001/XMLSchema.xsd  http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL

Возможны конфликты имен в схеме для схемы. Обходной путь должен создать customization.xjb со следующим

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" version="2.0">
<globalBindings>
<xjc:simple/>
</globalBindings>
<bindings scd="~xsd:complexType">
<class name="ComplexTypeType"/>
</bindings>
<bindings scd="~xsd:simpleType">
<class name="SimpleTypeType"/>
</bindings>
<bindings scd="~xsd:group">
<class name="GroupType"/>
</bindings>
<bindings scd="~xsd:attributeGroup">
<class name="AttributeGroupType"/>
</bindings>
<bindings scd="~xsd:element">
<class name="ElementType"/>
</bindings>
<bindings scd="~xsd:attribute">
<class name="attributeType"/>
</bindings>
</bindings>

Ваш окончательный звонок будет

wsimport -b  http://www.w3.org/2001/XMLSchema.xsd -b customization.xjb  http://www.holidaywebservice.com/Holidays/HolidayService.asmx?WSDL
4 голосов
/ 02 июня 2011

Как вы создали этот WSDL? Похоже, вы ссылаетесь на некоторые типы данных, которые не экспортируются в ваш WSDL.

EDIT
Wsdl ссылается на схему с именем 's', но это не может быть найдено, потому что его URL-адрес
http://www.w3.org/2001/XMLSchema но должно быть
http://www.w3.org/2001/XMLSchema.xsd

после изменения теперь также жалуется на http://www.27seconds.com/Holidays/, который тоже не указывает на схему. Вам необходимо исправить все из них в вашей копии WSDL и затем выполнить wsimport с ним.

Я также зашел на www.holidaywebservice.com и обнаружил, что есть вторая версия по адресу: http://www.holidaywebservice.com/HolidayService_v2/HolidayService2.asmx?wsdl

...