Usando wsdl2java
o Apache CXF 4.0.3, estou enfrentando um erro ao tentar importar XSD para meu arquivo WSDL. Os arquivos vêm de terceiros e com versões anteriores do CXF as importações estavam funcionando.
Simplifiquei os arquivos ao mínimo para reproduzir o problema. Aqui está o WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="https://webservices.sabre.com/websvc">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://schemas.xmlsoap.org/ws/2002/12/secext" schemaLocation="wsse.xsd"/>
</xsd:schema>
</types>
</definitions>
E este é o conteúdo de wsse.xsd
:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:xs="http://www.w3.org/2001/XMLSchema">
</xs:schema>
Quando eu corro wsdl2java
:
./wsdl2java -encoding UTF-8 -d /project/src/main/java -b "file:/project/src/main/resources/schema/custom-bindings/globalbinding.xjb" -p "=org.a.b.c" -suppress-generated-date -wsdlLocation classpath:schema/wsdl/sample.wsdl -verbose file:/project/src/main/resources/schema/wsdl/sample.wsdl
Eu recebo um erro:
org.apache.cxf.tools.common.ToolException: file:///apache-cxf-4.0.3/bin/ [1.132]: o namespace de destino do esquema importado "" não concorda com o valor esperado "http ://schemas.xmlsoap.org/ws/2002/12/secext
O targetNamespace
de wsse.xsd
corresponde ao namespace
do xsd:import
. Não vejo por que o elemento targetNamespace
in definitions
é relevante e já vi muitos exemplos de importações xsd em que xsd:schema
falta a targetNamespace
.
Tentei ativar targetNamespace
e definitions
mas schema
isso não altera o erro. Se eu alterar targetNamespace
o wsse.xsd
arquivo que está sendo importado, recebo um erro diferente sobre uma incompatibilidade de namespace entre xsd:import
o arquivo que está sendo importado.
Qual é a causa disso?