Attualmente sto scrivendo un nuovo set di servizi Web usando JAX-WS, ma ho difficoltà a decidere il modo migliore per convalidare gli input. Posso fare alcune validazioni nelle mie classi di implementazione ma alcuni errori di input falliscono silenziosamente. Ad esempio, i dati di carattere in un elemento numerico generano un numero intero null nell'oggetto JAXB.Come convalidare gli input JAX-WS?
Questi sono i progetti che ho incontrato.
@SchemaValidation
potrei aggiungere questa annotazione alla classe degli endpoint e JAX-WS prenderò cura della convalida. Questo ha funzionato localmente in Tomcat ma ci sono timori che non funzioni su alcuni server. La mia lamentela principale è che devo rinunciare al controllo su come vengono emessi gli errori nella risposta.Tutti gli input come stringhe
Odio questo approccio ma ho visto altri servizi Web in cui tutti gli input sono definiti come stringhe. Questo potrebbe catturare il caso dei dati di carattere in un elemento numerico, poiché potrei controllarlo dove chiamo la nostra API, anche se mancheresti ancora qualsiasi elemento xml con nome errato.
Vorrei davvero che gli errori tornassero nello stesso modo degli errori API piuttosto che come un errore di sapone. Qualche idea? Ho visto alcuni siti che parlano dell'intercettazione della richiesta con un tipo di filtro. Non sono sicuro di come funzionerebbe con risposte diverse per le diverse operazioni.
E.G.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<myOperationResponse>
<return>
<success>false</success>
<errors>
<error>
<code>UNIQUECODE</code>
<message>Message text</message>
</error>
</errors>
</return>
</myOperationResponse>
</S:Body>
</S:Envelope>
Forse sto chiedendo troppo ma ho pensato di vedere se mi ero perso qualcosa. TIA.
L'upvote mi ha appena ricordato questo. Questo è ora in produzione per diversi progetti e non abbiamo avuto problemi. –