2011-01-18 8 views
5

Ho un file WSDL che importa diversi schemi XML, ciascuno con lo stesso spazio dei nomi (chiamiamolo A). Sto cercando di utilizzare un file di bind esterno JAXB per modificare il nome del pacchetto generato (per esempio B) per quegli schemi. Ecco un esempio:CXF: come modificare il pacchetto di schema XML importato WSDL utilizzando il file di bind esterno JAXB?

Ho un file POM contenente la configurazione per la generazione del codice da WSDL (utilizzando il plugin cxf-codegen-plug-in).

mio 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> 

Ecco il mio file vero e proprio legame che non funziona affatto, sembra che non si applica a tutti (nessun messaggio di errore ...).

<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> 

Come io non ho alcun messaggio di errore nella generazione forse è perché l'espressione XPath utilizzato per l'accesso allo schema importato non è buona ...

voi ragazzi avete alcun indizio? Sono tipo bloccato qui ...

Grazie in anticipo per i vostri input!

risposta

0

È interessante notare che non ci sono risposte :) Purtroppo non è possibile archiviare ciò che si desidera. L'unico modo è definire file di bind separati per ogni file di schema che hai, che funzionerà correttamente.

+0

Grazie per la risposta, non sto lavorando su questo argomento in questo momento, quindi non posso testare questa soluzione. Lo farò appena possibile! – reef

+0

Un'aggiunta - sarà necessario utilizzare puro spazio dei nomi "jaxb" per i file XSD, "jaxws" non funzionerà con loro. – Stas

1

provare a scrivere le associazioni come-se lo schema-import sono state fuse nel documento WSDL, facendo riferimento direttamente il suo spazio dei nomi:

<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> 

questo ha funzionato per me. Complimenti a this post che dimostra di lavorare con uno schema importato.

Problemi correlati