2012-01-24 7 views
5

Stiamo sviluppando una piattaforma MDA che supporta i servizi Web. L'utente può fornire un WSDL in runtime e generare tutti gli elementi (interfaccia di servizio e implementazione per il server e consumer per il client) utilizzando internamente JAX-WS.Convalida del runtime WSDL con JAX-WS

Vogliamo aggiungere la convalida sul documento WSDL fornito dall'utente. In questo momento l'utente deve convalidarlo con uno strumento esterno come Oxygen, XMLSpy o uno strumento web, ma vogliamo aggiungerlo come parte del nostro sistema. Una funzionalità piacevole sarebbe anche la convalida dello schema, inclusi gli schemi incorporati dei WSDL.

In JAX-WS (RI) è disponibile il supporto per la convalida dello schema in runtime (utilizzando l'annotazione @SchemaValidation) ma non è stato trovato alcun supporto per la convalida WSDL.

Abbiamo provato ad integrare Eclipse's WSDL validator ma non sembra funzionare per noi.

C'è un modo per farlo con JAX-WS? In caso contrario, esiste un altro framework di validazione che possiamo integrare?

Grazie

risposta

2

C'è un po 'di confusione nella sua domanda che ho bisogno di chiarire prima.

Sembra che si voglia la possibilità di convalidare WSDL (sintassi + WS-I) e XSD, incorporati o referenziati esternamente dal WSDL. D'altra parte si introduce @SchemaValidation, che viene effettivamente utilizzato per convalidare i documenti di istanza.

In un approccio di sviluppo tradizionale, si potrebbe dire che si desidera almeno la capacità di convalidare gli artefatti in fase di progettazione (WSDL + XSD).

Per questo scenario, allora, consiglio il seguente:

WSDL: per i test di conformità WS-I, si prega di dare un'occhiata al test tools section of the WS-I site. Non è chiaro come le licenze che hanno con i loro strumenti di test funzionerebbero con le tue, ma almeno dovrebbe darti un'idea di cosa guardare se non funziona per te.

UPDATE: Ulteriori risorse di convalida WSDL: - Eclipse basano, come utilizzare al di fuori di Eclipse.

XSD: se hai davvero bisogno di una convalida separata per i file XSD, le cose potrebbero essere complicate per un prodotto di qualità di produzione; WSDL4J non è di grande aiuto qui, e credo che XSOM sia la strada da percorrere per questo tipo di lavoro. Devi estrarre il contenuto dalla sezione tipi come uno o più file XSD (potrebbe essere più di un file XSD, dare un'occhiata ad alcuni esempi, i WSDL di SharePoint di Microsoft mi vengono in mente come un buon caso di test), assegnare un uri di base per ogni XSD estratto che corrisponde alla posizione WSDL, quindi utilizzare XSOM per convalidare quelli.

Dato che si sta generando il client, probabilmente non si tratta di convalidare, ad esempio, le intestazioni HTTP (SOAP 1.1/HTTP, SOAPAction, se corrisponde alla definizione dell'operazione WSDL). Se si finisce per sviluppare un interesse anche in questo, che io chiamo convalida del runtime, allora consiglierei un layout diverso nel tuo approccio (cioè non farei affidamento su @SchemaValidation ma piuttosto farlo attraverso un servizio proxy trasparente e generico).

+0

Ho menzionato @SchemaValidation solo per evitare confusione tra l'istanza e la convalida schema/wsdl. Stavo chiedendo, come hai detto, sulla convalida degli artefatti della progettazione. Sul sito WS-I, ho dato un'occhiata agli strumenti e potrebbe funzionare, ma non sono sicuro della licenza. Informazioni sugli XSD, stiamo già separando quelli dal WSDL e supportiamo più schemi incorporati. Analizzerò come convalidare quelli con XSOM. E sul tuo ultimo punto, generiamo anche server, e la convalida di quelle intestazioni potrebbe essere interessante. Grazie per la tua risposta! – Denian

+1

Per qualche motivo, e dopo una rapida occhiata al file di licenza, mi sembra che lo stack di strumenti WS-I non sia amichevole verso strumenti chiusi o commerciali. Volevo farlo notare per essere sicuro di guardare anche a questi aspetti. Per la convalida delle intestazioni, ho visto casi in cui il client invia il corpo Soap corretto senza la corretta SOAPAction. Inoltre, grazie per il chiarimento, ho pensato così a @SchemaValidation. –

+0

Sì, hai ragione: http://netzooid.com/blog/2006/11/26/is-ws-i-open-look-at-the-test-license/ Penso che dovremo trovare altra soluzione o struttura. Sulla convalida degli XSD, ho provato con XSOMParser a creare un ErrorHandler e funziona perfettamente. Penso che dovrei lasciare questa domanda aperta perché la preoccupazione principale era la convalida WSDL, ma comunque grazie molte per le vostre risposte. – Denian

Problemi correlati