vendredi 7 février 2014

Erreur personnalisée pour un service web

Il est possible de personnaliser une erreur retournée par un service web. Pour cela il faut définir dans le WSDL un élément fault dans l'opération.

J'ai créé un exemple sur Github : https://github.com/lnplnp/HelloWorldWS

Cet exemple illustre aussi le fait que si une restriction est décrite dans le WSDL alors il n'est pas possible d'attraper l'exception levée par le code généré dans le code "métier".

J'ai finalement complété le code avec un exemple de gestion des restrictions décrites dans le WSDL depuis le code généré. L'inconvénient de cette méthode : si on met à jour le WSDL, la re-génération du code source supprimera cette gestion des restrictions.
Faute de trouver mieux pour le moment, je garde cette solution ! Si vous avez une meilleure solution, je suis preneur.

Je n'étais pas satisfait du fait d'utiliser une variable statique pour passer le message d'erreur. Finalement, je me suis dis qu'en attribuant un message à la RuntimeException, ce message se propagerait de manière plus sûre.