JAXWS каталог wsimport для разрешения "элемента" уже определенной ошибки

Мы пытаемся использовать веб-сервис, который размещен третьей стороной. Когда я попытался сгенерировать классы artifcats & JAXB с помощью wsimport, я столкнулся со следующими ошибками. Обратите внимание, что содержимое обоих файлов xsd точно такое же (не знаю, зачем это делать), включая пространство имен. Однако последняя часть сервдокоида отличается. Структура wsdl и схема будут следовать.

[ERROR] 'ElementX' is already defined
  line # of http:/....:port/wsdl/schema1.xsd?serviceoid=123&servdocoid=<b>5</b>

[ERROR] (related to above error) the first definition appears here
  line # of http:/....:port/wsdl/schema1.xsd?serviceoid=123&servdocoid=<b>1</b>

Я думаю, я знаю, в чем проблема, и я пытаюсь найти способ обойти использование `-catalog с wsimport(не уверен, что это правильно), но все еще сталкиваюсь с ошибкой.

Структура WSDL такая же, как описано, и я выделил только ключевые части и проигнорировал остальную часть определения WSDL.

<wsdl:definitions targetNamespace="http:/xyz.com" xmlns:soap12="http:/schemas.xmlsoap.org/wsdl/soap12/ xmlns:wsdl="http:/schemas.xmlsoap.org/wsdl/" xmlns:xsd="http:/www.w3.org/2001/XMLSchema">
...
<!-- relevant -->
<xsd:schema targetNamespace="http://schema1" xmlns:wsdl="http:/schemas.xmlsoap.org/wsdl/" xmlns:xsd="http:/www.w3.org/2001/XMLSchema xmlns:soap12="http:/schemas.xmlsoap.org/wsdl/soap12/>
  <xsd:include schemaLocation="http:/domain.com:port/wsdl/schema1.xsd?serviceoid=123&servdocoid=1" />
</xsd:schema>
...............
</wsdl:definitions>

Схема, используемая в вышеупомянутом wsdl, является вложенной, то есть она импортирует несколько схем, которые снова могут импортировать множественные значения. Примите это как цепь.

schema1.xsd

<xsd:schema elementFormDefault="qualified" targetNamespace="http:/schema1" xmlns:tns1="http:/schema1" xmlns:tns2="http:/schema2" xmlns:tns3="http:/schema3" xmlns:xsd="http:/www.w3.org/2001/XMLSchema">
....
<!-- relevant -->
<xsd:import namespace="http:/schema2" schemaLocation="http:/domain.com:port/wsdl/schema2.xsd?serviceoid=123&servdocoid=2" /> 
  <xsd:import namespace="http://schema3" schemaLocation="http:/domain.com:port/wsdl/schema3.xsd?serviceoid=123&servdocoid=3" /> 
...
</xsd:schema>

schema2.xsd

<xsd:schema elementFormDefault="qualified" targetNamespace="http:/schema2" xmlns:tns2="http:/schema2" xmlns:tns4="http://schema4"  xmlns:xsd="http:/www.w3.org/2001/XMLSchema">
...
<!-- relevant -->
 <xsd:import namespace="http:/schema4" schemaLocation="http:/domain.com:port/wsdl/schema4.xsd?serviceoid=123&servdocoid=4" /> 
...
</xsd:schema>

schema4.xsd

<xsd:schema elementFormDefault="qualified" targetNamespace="http:/schema4" xmlns:tns4="http:/schema2" xmlns:tns1="http:/schema1"  xmlns:xsd="http:/www.w3.org/2001/XMLSchema">
...
<!-- relevant -->
 <xsd:import namespace="http:/schema1" schemaLocation="http:/domain.com:port/wsdl/schema1.xsd?serviceoid=123&servdocoid=5" /> 
...
</xsd:schema>

Таким образом, ключевыми схемами здесь являются schema1.xsd и schema4.xsd. Оба имеют одинаковое содержимое, но имеют разные ссылки. Сказав это, я пытаюсь использовать файл -catalog, чтобы wsimport знал, что для всех пространств имен "http:/schema1" всегда разрешается к одной ссылке http:/domain.com: порт /wsdl/schema1.xsd? Serviceoid=123&servdocoid=1, но все равно я не могу заставить его работать.

0 ответов

Другие вопросы по тегам