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

Struts 1 Java Discussion :

[struts][Datasource]Gestion des erreurs


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut [struts][Datasource]Gestion des erreurs
    Bonjour,
    dans mon appli, j'utilise une base de données définie dans le fichier struts-config. Lorsque des informations sont erronées(url, user, ...) lors d'une tentative de connexion il passe dans le catch et il me renvoie une UnavailableException et m'affiche une page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Etat HTTP 404 - Servlet action n'est pas disponible.
    comment faire pour récupérer cette exception afin d'afficher un message d'erreur directement sur mon appli.
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Par défaut
    Struts donne la possibilité d'implémenter une gestion des exceptions. Regarde sous ExceptionHandler si tu trouves quelque chose... ça permet de gérer les exceptions qui sont levées dans le cadre de l'exécution des actions. Malheureusement, je ne sais plus comment ça se configure, je l'avais utilisé dans une vie antérieur...
    Si quelqu'un à d'autres idées...

  3. #3
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    suffit de catcher la bonne exception, a savoir une SQLException.

    Normalement l'appli doit pas démarrer ou generer une erreur au demaarrage si elle n'arrive pas à se connecter.

    Si tu te sert de la connect ds l'appli, définit une Exception au niveau du struts-config.

    Ca te permet de faire une traitement particulier.

    @+

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut
    j'utilise le code suivant pour la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        try {
          maBase.connecterStruts();
        }
        catch (SQLException ex) {
          ActionErrors erreurs = new ActionErrors();
          erreurs.add("dbBase",
                      new ActionError("erreurs.dbBase", ex.getMessage()));
          this.saveErrors(request, erreurs);
          return mapping.findForward("afficherErreurs");
        }
    mais dés que un élément du data-source est in correct j'ai la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Etat HTTP 404 - Servlet action n'est pas disponible.
     
    type Rapport d'état
     
    message Servlet action n'est pas disponible.
     
    description La ressource demandée (Servlet action n'est pas disponible.) n'est pas disponible.
    Si tu te sert de la connect ds l'appli, définit une Exception au niveau du struts-config.

    Ca te permet de faire une traitement particulier.
    comment on fait pour définir ce genre d'exception ?

    Merci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Par défaut
    je fais peut etre fausse route mais j'ai l'impression que c'est a la generation de ton objet datasource que le conteneur leve cette exception. Il va peut falloir que tu créer ta propre datasource pour implementer une gestion de cette exception.

    Pourquoi as tu besion de gerer ca ? Tes parametres de datasource sont dynamiques ?

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut
    Citation Envoyé par desproges
    Pourquoi as tu besion de gerer ca ? Tes parametres de datasource sont dynamiques ?
    il arrive pour des raisons de maintenance de serveurs que le chemin d'accès à une BD soit modifié, je voulait donc pouvoir afficher un message d'erreur plus clair en récupérant l'exception...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Par défaut
    Tu pourrais peut etre adapter une classe action générique. toutes tes classes action implementeraient celle-ci.

    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
    public abstract class ActionGenerique extends Action {
     
    	public ActionForward execute(ActionMapping mapping,	ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
     
    		// Execution de la partie specifique a la classe fille
    		try {
    			return executeFils(mapping, form, request, response, session);
    		} catch (IOException e) {
    			logger.log(Level.SEVERE, "Erreur à l'execution d'une action, IOException : \n"+e);
    			throw e;
    		} catch (ServletException e) {
    			logger.log(Level.SEVERE, "Erreur à l'execution d'une action, ServletException : \n"+e);
    			throw e;
    		}
     
    	}
     
    	public abstract ActionForward executeFils(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException, ServletException;
    }
    Au lieu des "throw e", essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActionErrors erreurs = new ActionErrors();
    erreurs.add(ActionErrors.GLOBAL_ERROR, new ActionError("erreur.execution"));
    saveErrors(request, erreurs);
    return mapping.findForward("echec");

    Je ne sais pas si ca marche mais ca peut le faire.

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut
    J'ai essayé mais c'est toujours pareil ...
    Merci pour ton aide

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut
    Merci à tous pour votre aide
    J'ai modifié mon appli pour que ça passe bien...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  3. [Struts-Validator] Gestion d'erreurs
    Par sylvain_neus dans le forum Struts 1
    Réponses: 14
    Dernier message: 09/04/2004, 15h15
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 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