2012-12-21 10 views
8

Ho alcuni servizi JAX-WS che sto cercando di consumare, ma l'XML restituito dal servizio (di cui non posso cambiare) ha un DTD non valido (che produce il XMLStreamReaderException in quanto non vi sono spazi bianchi tra publicId e systemId). Come faccio a fare in modo che i client ignorino DTD poco formati?Ignora la convalida XML per client JAX-WS

+2

quale versione di jaxws stai usando? non sapevo che i jaxws fossero stati trattati in dtd. – jtahlborn

+1

[questo collegamento] (http://metro.1045641.n5.nabble.com/JAX-WS-RI-2-1-x-susceptible-to-DTD-entity-expansion-attack-td1062920.html) potrebbe essere utile. dettagli sulla gestione di dtd in relazione alle varie versioni di jaxws. – jtahlborn

+0

In generale, dovrei considerare che WS utilizza un DTD locale (non so se si tratta di una funzionalità JAX), o inserire un gestore personalizzato: http://pic.dhe.ibm.com/infocenter/ wasinfo/v7r0/index.jsp? topic =% 2Fcom.ibm.websphere.express.doc% 2Finfo% 2Fexp% 2Fae% 2Ftwbs_jaxwshandler.html –

risposta

1

La parte non valida DTD di un WSDL? in caso affermativo, è possibile utilizzare JAXWS catalog per leggere localmente lo XML e quindi solo richiamare il servizio.

È necessario scaricare WSDL, correggerlo e memorizzarlo localmente. Quindi, quando si crea un'istanza Service, leggere lo WSDL dal proprio negozio locale. Aggiorna la proprietà endpoint e invoca il servizio.

+0

Questo era quello che doveva essere fatto, purtroppo. Sento che è un peccato che JAX non possa gestire solo i DTD con un problema così piccolo, specialmente quando conosce _exactly_ cosa c'è che non va e va bene con un valore di stringa vuoto. – doctorless

Problemi correlati