La meilleure façon de la gestion des exceptions dans une application web services
J'ai une application qui se compose de SAVON et de services web REST et un simple accès HTTP. Tous convertir des demandes entrantes et les envoyer à un gestionnaire. Le plus pénible c'est la gestion des exceptions. Afin de rétablir le droit de réponse, je dois conclure de chaque méthode avec bloc try-catch et de créer une réponse.
J'ai pensé que je pouvais créer un filtre qui pourrait le faire. Mais comment le filtre de reconnaître la source de celui-ci (soap, rest frontend), donc je savais que je devais revenir un SAVON ou une autre réponse?
OriginalL'auteur user219882 | 2012-03-07
Vous devez vous connecter pour publier un commentaire.
Il dépend de la WS cadre que vous utilisez. Tout ce que je sais avoir une sorte de intercepteurs/aspects que vous pouvez injecter et de gérer les exceptions dans un seul endroit. Par exemple, dans apache cxf il y a même un spécial sortant erreur de la chaîne d' où vous pouvez brancher votre propre intercepteurs.
Évidemment
try-catch
dans chaque méthode est une mauvaise idée.OriginalL'auteur Tomasz Nurkiewicz
Dans la couche de dessous
Web-Service Layer
, vous devez créer votre propreException
et dansWeb-Service layer
vous devez utilisertry-catch
approche pour atteindreoccurred exception
et danscatch
bloclog
et de le convertir à votre service web personnalisé couche d'exception. Je montre cette approche dans la suite:Alternative à l'aide de try catch dans toute
Web-Method
,vous pouvez utiliserAOP
approche(par exempleSpring AOP
) ouinterceptor
approcheWeb-Service frameworks
(par exempleSOAPHandler<T>
dansJAX-WS
).Note: Dans
JAX-WS
standard, vous ne pouvez pasthrow
unRuntimeException
parce queException
doit préciser dans le finalWSDL
et si vousthrow
unRuntimeException
votre client de service web ne pas atteindre vosCustomException
, dans un autre de vosWeb-Method
besoin de jette lui-même de la signature.Vous pouvez voir la sélection de
Web-Service
faramework documents pour plus d'informations.OriginalL'auteur Sam
Il semble que vous n'êtes pas à l'aide d'un cadre parce que c'était typique des cadres de fournir. Par exemple, le Printemps vous permet de découpler le code de gestion des exceptions et de définir votre coutume, les gestionnaires d'exception.
Dans votre cas, en général, vous avez 2 solutions.
(1) Vous pouvez utiliser le pattern Décorateur: enveloppez chaque service avec le décorateur où chaque méthode est mise en œuvre comme
Car il est très détaillé, vous pouvez gagner du temps à l'aide de Dynamic proxy (fonctionnalité qui a été introduite dans java 5). Donc, vous pouvez dynamiquement envelopper chaque service (si vos services ont défini l'interface).
(2) Vous pouvez le résoudre à l'aide de servlet API page d'erreur:
javax.servlet.ServletException
/servlet/ErrorDisplay
pour plus de détails, voir http://java.sun.com/developer/technicalArticles/Servlets/servletapi2.3/
OriginalL'auteur AlexR
Vous pouvez personnaliser votre classe!! Il ne!
Prendre facile sur des erreurs de diagnostic, comme insérer un numéro de protocole, Journal des messages, client de messagerie, etc...
http://java.globinch.com/enterprise-java/web-services/jax-ws/jax-ws-exceptions-faults-annotation-exception-and-fault-handling-examples/#Pre-Requisites
OriginalL'auteur elciospy