maven 2 - online - CXF: ¿Cómo cambiar el paquete del esquema XML importado WSDL usando el archivo de enlace externo JAXB?
wsdl2java download (2)
Tengo un archivo WSDL que importa varios esquemas XML, cada uno de ellos con el mismo espacio de nombres (llamémoslo A). Estoy tratando de usar un archivo de enlace externo JAXB para cambiar el nombre del paquete generado (por ejemplo, B) para esos esquemas. Aquí hay un ejemplo:
Tengo un archivo POM que contiene la configuración para la generación de código de WSDL (usando el complemento cxf-codegen-plugin).
Mi WSDL:
<definitions ...>
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="C">
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
...
</xsd:schema>
</types>
...
</definitions>
Aquí está mi archivo de enlace real que no funciona en absoluto, parece que no se aplica en absoluto (ningún mensaje de error ...).
<jaxws:bindings wsdlLocation="WSDL_LOCATION" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" jaxb:version="2.0">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace=''C'']/xs:import[@namespace=''A'']">.
<jaxb:schemaBindings>
<jaxb:package name="B" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
Como no tengo ningún mensaje de error en la generación, tal vez sea porque la expresión XPath utilizada para acceder al esquema importado no es buena ...
¿Tienen alguna pista? Estoy algo atrapado aquí ...
¡Gracias de antemano por sus entradas!
Curiosamente, no tienes respuestas :) Lamentablemente, no es posible archivar lo que deseas. La única forma es definir archivos de enlace separados para cada archivo de esquema que tenga, que funcionarán bien.
Intente escribir sus enlaces como -si la importación de esquema se fusionó en el documento WSDL, al hacer referencia directamente a su espacio de nombres:
<jaxws:bindings wsdlLocation="WSDL_LOCATION"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
jaxb:version="2.0">
<jaxws:bindings
node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace=''A'']">.
<jaxb:schemaBindings>
<jaxb:package name="B" />
</jaxb:schemaBindings>
</jaxws:bindings>
Esto funcionó para mí. Felicitaciones a esta publicación que demuestra que se trabaja con un esquema importado.