IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Gestion des exceptions avec Spring


Sujet :

Spring Web Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut Gestion des exceptions avec Spring
    Bonjour,

    Je développe en Spring Rest et je souhaiterai remonter les exceptions dans un flux json pour pouvoir ensuite les remonter à mon clients.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Controller REST:
     
    @RequestMapping(value = "/utilisateur/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<List<Utilisateur>> listerUtilisateur() throws ListerUtilisateurException, Exception{
    return ResponseEntity.status(HttpStatus.OK).body(utilisateurServiceWebService.listerUtilisateur());
    }
     
    Service:
    public List<Utilisateur> listerUtilisateur() throws ListerUtilisateurException, Exception{
    List<Utilisateur> listeUtilisateurs = null;
    try{
    List<UtilisateurEntitie> listeUtilisateursEntitie = utilisateurDao.listerUtilisateur();
    listeUtilisateurs = new ArrayList<Utilisateur>();
    for(UtilisateurEntitie unUtilisateur : listeUtilisateursEntitie){
    Utilisateur utilisateur = new Utilisateur();
    utilisateur.setId(unUtilisateur.getIdentifiant());
    utilisateur.setNom(unUtilisateur.getNom());
    utilisateur.setPrenom(unUtilisateur.getPrenom());
     
    listeUtilisateurs.add(utilisateur);
    }
    }catch(CannotCreateTransactionException e){
    System.out.println(e.getMessage());
    throw new ListerUtilisateurException("Erreur d'accès à la base de données !");
    }
     
    return listeUtilisateurs;
    }
     
    DAO:
    @SuppressWarnings("unchecked")
    public List<UtilisateurEntitie> listerUtilisateur() throws ListerUtilisateurException, Exception{
    List<UtilisateurEntitie> listeUtilisateurs = null;
     
    try{
    listeUtilisateurs = (List<UtilisateurEntitie>)sessionFactory.getCurrentSession().createQuery("from UtilisateurEntitie").list();
    }
    catch(HibernateException e){
    throw new ListerUtilisateurException("Aucun utilisateurs trouvé !");
    }
    catch(Exception e){
    throw new ListerUtilisateurException("Erreur grave !");
    }
     
    return listeUtilisateurs;
    }
    Par exemple, si l'exception indique "Aucune utilisateurs trouvé !", je souhaiterais remonter sa au client mais je vois pas comment faire. On m'a parler des exceptions handler

  2. #2
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Problème résolu!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
    * @return ResponseEntity<List<Utilisateur>>
    * @throws ListerUtilisateurException
    * @throws Exception
    */
    @RequestMapping(value = "/utilisateur/", method = RequestMethod.GET, produces={"application/json; charset=UTF-8"})
    public ResponseEntity<List<Utilisateur>> listerUtilisateur() throws ListerUtilisateurException, Exception {
    return ResponseEntity.status(HttpStatus.OK).body(utilisateurServiceWebService.listerUtilisateur());
    }
     
    @ExceptionHandler(ListerUtilisateurException.class)
    public ResponseEntity<ErreurReponse> listerUtilisateurException(Exception ex) {
    ErreurReponse erreur = new ErreurReponse();
    erreur.setErrorCode(HttpStatus.NOT_FOUND.value());
    erreur.setMessage(ex.getMessage());
    return new ResponseEntity<ErreurReponse>(erreur, HttpStatus.OK);
    }

  3. #3
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Tu peux aussi utiliser un @ControllerAdvice pour regrouper tes exceptions, peux-tu indenter les codes que tu copie/colle s'il te plait ?

    Cordialement,
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @ControllerAdvice
    public class ExceptionControllerAdvice {
    	@ExceptionHandler(Exception.class)
    	public ResponseEntity<ErreurReponse> exceptionHandler(Exception ex) {
    		ErreurReponse erreur = new ErreurReponse();
    		erreur.setErrorCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
    		erreur.setMessage(ex.getMessage());
    		return new ResponseEntity<ErreurReponse>(erreur, HttpStatus.OK);
    	}
    }
    Ce type de controller ne contient que une seule méthode pour toutes mon application pour gérer toutes les exception si je comprend bien?
    Et j'ai mi en code erreur, un type 500, c'est correct pour gérer toutes les erreurs en général?

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je souhaite remonter le contenu de ma requête rest à mon client.
    Mais comment faire car il doit soit récupérer ma liste utilisateur soit mon exception

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut spring échange rest
    Bonjour,

    Je développe une application Spring avec échange Rest et lorsque mon service rest retourne une exception, je souhaiterais récupérer le contenu de celle-ci

    Voilà mon controleur advice côté rest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @ControllerAdvice
    public class ExceptionRestControllerAdvice {
    	@ExceptionHandler(Exception.class)
    	public ResponseEntity<ErreurReponse> exceptionHandler(Exception ex) {
    		ErreurReponse erreur = new ErreurReponse();
    		erreur.setErrorCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
    		erreur.setMessage(ex.getMessage());
    		return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(erreur);
    	}
    }
    Et ma méthode qui appel un service rest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        	HttpHeaders headers = new HttpHeaders();
        	headers.setContentType(MediaType.APPLICATION_JSON);
        	HttpEntity<String> entity = new HttpEntity<String>(headers);
        	ResponseEntity<String> responseEntity = null;
     
            RestTemplate restTemplate = new RestTemplate();  
            try{
            	responseEntity = restTemplate.exchange(url+"monUrl/", HttpMethod.GET, entity, String.class);
            }
            catch(HttpStatusCodeException e){
                System.out.println("Reponse : "+responseEntity.getStatusCode() + " - " + responseEntity.getBody());
            }
    Je souhaiterai récupérer dans le catch le code erreur et le body pour le convertir en objet ErreurReponse pour récupérer l'erreur précise
    Sauf que quand il y a une exception, le responseEntity reste à null

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Finalement, j'ai réussi à faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            	final HttpStatusCodeException httpException = (HttpStatusCodeException) e;
                final ObjectMapper mapper = new ObjectMapper();
                ErreurReponse erreur = null;
    			try {
    				erreur = mapper.readValue(httpException.getResponseBodyAsString(), ErreurReponse.class);
    			} catch (IOException e1) {
    	            throw new ListerUtilisateurException("Impossible de convertir le flux json");
    			}
    Mais j'arrive pas à la remonté à ma jsp. Actuellement, cela se trouve dans la couche service

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Problème résolu

Discussions similaires

  1. [Data] gestion des transactions avec Spring Probleme
    Par mouvma dans le forum Spring
    Réponses: 2
    Dernier message: 02/04/2008, 20h39
  2. Gestion des exceptions avec le plugin ErrorHandler ?
    Par AzAt0th dans le forum Zend Framework
    Réponses: 7
    Dernier message: 07/01/2008, 14h31
  3. [POO] Gestion des exception avec php4
    Par mulot49 dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2007, 10h18
  4. Réponses: 2
    Dernier message: 01/12/2006, 19h55
  5. [vb.net]Gestion des exceptions avec les web services
    Par mvr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/12/2005, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo