2010-02-28 12 views
6

Ho un WSDL che contiene 3 schemi all'interno del suo elemento "tipi". Gli schemi non sono definiti in XSD esterni ma all'interno dell'elemento types.Personalizzazioni JAXB: più schemi all'interno di WSDL e schemaLocation

Desidero personalizzare un elemento all'interno dello schema numero 2 e modificarne il nome per evitare conflitti.

Quindi nello schemaLocation come posso farlo? Nonostante rendendo la domanda che ho il modo per farlo:

schemaLocation="../wsdl-files/mywsdl.wsdl#types?schema2"> 
    ... 
    <jxb:bindings node="some xpath 

ma non sono quello che ha trovato, ma un mio collega che non lavora più con me. C'è una risorsa in cui posso trovare la spiegazione anche se la capisco? Un link o un libro? Da qualche parte dove posso trovare anche altri esempi.

Il mio problema è il valore schemaLocation (../ wsdl-files/mywsdl.wsdl # types? Schema2) non xpath. Voglio conoscere tutte le possibilità di fare riferimento a uno schema all'interno di un WSDL. Ho bisogno di una documentazione per questo o qualcosa del genere.

La ringrazio molto

+0

Il mio problema è il valore schemaLocation (../ WSDL-files/mywsdl.wsdl #types? schema2) non xpath ecc. Voglio conoscere tutte le possibilità di fare riferimento a uno schema all'interno di un WSDL, ecc. Ho bisogno di una documentazione per questo o qualcosa del genere. Grazie ancora – DaTroop

+0

Quale strumento stai usando per associare il WSDL? – skaffman

+0

dovresti modificare la tua domanda e inserire il contenuto del tuo commento nella sezione "Aggiornamento:". Quindi elimina il commento. –

risposta

2

v2.1 JAXB Ri supporto per [Schema componenti designatori] aggiunto [1], che in teoria consente di fare riferimento a componenti dello schema simbolico, piuttosto che per la loro posizione di file e XPath posizione . In linea di principio, questo è molto più bello da usare, ma non l'ho mai usato da solo.

Non sono sicuro di quanto sia ampiamente supportato, tuttavia. C'è molto poco da menzionare altrove rispetto a quel blog. Fa menzione del fatto che faceva parte delle specifiche proposte per JAXB 2.1, quindi se questo fosse passato, dovrebbe essere implementato da ogni implementazione di JAXB 2.1, incluso Java6. È possibile, tuttavia, che non sia mai stato effettivamente aggiunto alle specifiche.

+0

Grazie amico! Sembra fantastico. Ma avete qualcosa che li descrive: #types? Schema2 Grazie! – DaTroop

+1

@DaUltimateTrooper: il punto di SCD è che non è necessario specificare il percorso dello schema nella personalizzazione dell'associazione, si fa riferimento agli elementi dello schema in base al nome. – skaffman

+1

Da quello che ho trovato, SCD non è ancora ufficialmente supportato, ma Sun's xjc lo userà se viene data l'opzione '-extension ', e anche gli strumenti dipendenti come CXF funzionano con esso. –

1

Aveva un problema simile (cinque schemi in tipi con nomi comuni) e in qualche modo non riusciva a far funzionare correttamente SCD. La mia soluzione è stata la seguente:

custombinding.xml:

<jxb:bindings version="2.1" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 

    <jxb:bindings schemaLocation="file:wsdlfile.wsdl" node="*/xs:schema[1]"> 
     <jxb:schemaBindings> 
      <jxb:package name="my.custom.package"/> 
     </jxb:schemaBindings> 
    </jxb:bindings> 
</jxb:bindings> 

xjc chiamata in formica build file:

<target name="xjc_generate"> 
    <exec executable="xjc" > 
     <arg value="-wsdl" /> 
     <arg value="${wsdl.base}/service/wsdlfile.wsdl" /> 
     <arg value="-d" /> 
     <arg value="${dir.src}" /> 
     <arg value="-b" /> 
     <arg value="${wsdl.base}/service/custombinding.xjb" /> 
    </exec> 
</target> 
Problemi correlati