java xsd jaxb wsimport

java - wsimport-Dos declaraciones causan una colisión, la misma línea dada



xsd jaxb (1)

wsimport usar wsimport para generar un cliente para un punto final SOAP. El WSDL y todos los archivos XSD utilizados son copias locales.

Este es el comando que se está ejecutando:

wsimport ./bwWsdl.xml -p com.generated -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution

Lo que da este error:

[ERROR] Two declarations cause a collision in the ObjectFactory class. line 16 of file:/schemas/newSchema.xsd [ERROR] (Related to above error) This is the other declaration. line 16 of file:/schemas/newSchema.xsd

Tenga en cuenta que el número de línea es el mismo para la colisión informada.

Aquí está el esquema:

<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="2.004" id="OTA2003A2009A"> <xs:complexType name="TPA_ExtensionsType"> <xs:annotation> <xs:documentation xml:lang="en">Description here. </xs:documentation> </xs:annotation> <xs:sequence> <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:element name="TPA_Extensions" type="TPA_ExtensionsType"> <xs:annotation> <xs:documentation xml:lang="en">More description here.</xs:documentation> </xs:annotation> </xs:element> </xs:schema>

He intentado eliminar la definición de tipo, pero se hace referencia en muchos otros lugares.

¿Podría alguien ofrecer consejos sobre cómo hacer que esto funcione?

Gracias

Editar:

Aquí están las líneas donde WSDL importa estos esquemas:

<definitions name=''ResLookupGet'' targetNamespace=''http://org.jboss.ws/resLookupGet'' xmlns=''http://schemas.xmlsoap.org/wsdl/'' xmlns:http=''http://schemas.xmlsoap.org/wsdl/http/'' xmlns:mime=''http://schemas.xmlsoap.org/wsdl/mime/'' xmlns:ns=''http://www.opentravel.org/OTA/2003/05/beta'' xmlns:rq=''http://www.opentravel.org/OTA/2003/05/betarq'' xmlns:rs=''http://www.opentravel.org/OTA/2003/05/betars'' xmlns:soap=''http://schemas.xmlsoap.org/wsdl/soap/'' xmlns:tns=''http://org.jboss.ws/resLookupGet'' xmlns:xsd=''http://www.w3.org/2001/XMLSchema''> <types> <xsd:schema targetNamespace=''http://org.jboss.ws/resLookupGet'' xmlns:tns=''http://org.jboss.ws/resLookupGet'' xmlns:xsd=''http://www.w3.org/2001/XMLSchema''> <xsd:import namespace=''http://www.opentravel.org/OTA/2003/05/betarq'' schemaLocation=''./schemas/FooAffiliateHeaderRQ.xsd''/> <xsd:import namespace=''http://www.opentravel.org/OTA/2003/05/betarq'' schemaLocation=''./schemas/FooResLookupGetRQ.xsd''/> <xsd:import namespace=''http://www.opentravel.org/OTA/2003/05/betars'' schemaLocation=''./schemas/FooResLookupGetRS.xsd''/> </xsd:schema> </types> <message name=''ResLookupGetRQ''> <part element=''rq:FooResLookupGetRQ'' name=''FooResLookupGetRQ''></part> </message> <message name=''ResLookupGetRS''> <part element=''rs:FooResLookupGetRS'' name=''FooResLookupGetRS''></part> </message>


Gracias a la ayuda de @Petru Gardea, finalmente pude superar esto omitiendo la -p com.generated paquete -p com.generated para wsimport. Así que esto es lo que eventualmente pude ejecutar para superar este problema:

wsimport ./bwWsdl.xml -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution

El razonamiento es que wsimport intenta generar clases en el mismo paquete con el mismo nombre y / o métodos, lo que obviamente no puede hacer.

Por lo tanto, al omitir la declaración del paquete forzado, wsimport puede colocar las clases en los paquetes que desee, lo que resulta en 3 paquetes diferentes según la <xsd:schema> en el WSDL.

Gracias de nuevo @Petru!