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

Tomcat et TomEE Java Discussion :

[TomCat] afficher la trace TomCat dans une page perso


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut [TomCat] afficher la trace TomCat dans une page perso
    Bonjour,

    Je suis actuellement en train de développer une appli Web J2EE - TomCat.

    J'ai créé ma propre page d'erreur pour l'erreur 500 grace au fichier web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <error-page>  
            <error-code>500</error-code> 
            <location>/pages/erreurs/500.jsp</location>
    </error-page>
    Jusque la pas de problème. Ce que je voudrais c'est dans ma page perso, afficher toute la trace TomCat, vous savez les fameux messages du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    1 mars 2006 09:39:47 org.apache.struts.action.RequestProcessor processException
    ATTENTION: Unhandled Exception thrown: class java.lang.NullPointerException
    1 mars 2006 09:39:47 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet action a généré une exception
    java.lang.NullPointerException
    	at action.AccueilAction.execute(AccueilAction.java:46)
    	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
                  ...
                  ...
    Est-ce que c'est possible et si oui comment ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  2. #2
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Bon en gros je veux la même page d'erreur que celle affichée par Tomcat,
    c'est à dire avec le code de l'erreur et la trace.

    Lorsqu'une erreur se produit, Tomcat regarde dans le fichier web.xml si une redirection existe

    Le problème c'est que je fais une redirection vers différentes JSP en fonction du code de l'erreur. Les jsp sont pratiqument similaires sauf que j'affiche "en dur" le code de l'erreur.

    Je voudrais une seule JSP pour toutes les erreus (400,500...), mais qui recoit en paramètre le code de l'erreur et la trace de l'eereur.

    Quelqu'un sait-il comment faire ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    bonjour,

    dans tes jsp il faut que tu rajoutte la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ page language="java" errorPage="/erreur.jsp"%>
    avec erreur.jsp (par exemple)
    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
     
    <%@ page language="java"
      import="java.io.*"
      isErrorPage="true"%>
     
    <html>
    <head>
    <title>
    Erreur
    </title>
    </head>
    <body>
    <h3> Erreur : </h3>
     
    <p> Message
     
    <%-- Exception Handler --%>
    <table width="100%" align=center>
    	<tr>
    		<td valign=top>
    				<blockquote>
    				<b> <pre> 
    					<font color="red">
    						<%= exception.toString() %><br>
    					</font>
    				</pre> </b>
    				</blockquote>
    		</td>
    	</tr>
    </table>
     
    <%
    StringWriter sw = new StringWriter();
    PrintWriter pw = new PrintWriter(sw);
    exception.printStackTrace(pw);
    out.print(sw);
    sw.close();
    pw.close();
    %>
     
    </pre>
    </blockquote>
    </body>
    </html>

  4. #4
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Ooaou ca m'a l'air d'être un bon début !

    Par contre ca ne m'affiche pas la bonne erreur.

    En effet, dans ma servlet j'ai provoqué une exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Operateur op = null;
    op.getCode();
    Dans la console d'Eclipse j'ai :

    1 mars 2006 13:53:08 org.apache.struts.action.RequestProcessor processException
    ATTENTION: Unhandled Exception thrown: class java.lang.NullPointerException
    1 mars 2006 13:53:08 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet action a généré une exception
    java.lang.NullPointerException
    at action.AccueilAction.execute(AccueilAction.java:46)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    ...

    et dans la jsp j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.lang.NullPointerException
    J'ai l'imression que l'exception récupérée est celle de plus haut niveau.

    J'ai essayé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exception.getCause().toString()
    mais ca ne fonctionne pas.

    Y a-t-il un moyen de récupérer la cause ou l'excepetion mère ?
    Ou suis-je à côté de la plaque ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Je suppose que c'est Struts qui encapsule l'exception.

    As tu défini une exception globale dans ton fichier struts-config ?

    <global-exceptions>
    <exception
    key="global.error.message"
    path="/error.jsp"
    scope="request"
    type="java.lang.Exception"/>
    </global-exceptions>

  6. #6
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Bah non vu que j'utilise la gestion des erreus de Tomat (web.xml) et non de Struts.

    Je veux bien faire comme tu dis mais mon premier problème va toujours exister, c'est à dire :

    Une fois que je suis redirigé vers la jsp, dans le code de cette jsp :
    - comment récupérer et afficher le code de l'erreur ?
    - comment récupérer et afficher la trace de l'erreur ?

    Tu sais comment faire ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  7. #7
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    En fait ca se précise :

    En fait quand je ne gère pas l'erreur et que je laisse TomCAt afficher sa propre page, il affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    exception
     
    javax.servlet.ServletException
    ...
     
    Cause mère : 
     
    java.lang.NullPointerException
    ...
    Et bien quand j'affiche ma propre page d'erreur, j'arrive à afficher l'exception en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%exception.printStackTrace(new java.io.PrintWriter(out));%>
    mais j'arrive pas à afficher la cause mère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%exception.getCause().printStackTrace(new java.io.PrintWriter(out));%>
    car ca plante : le "exception.getCause()" retourne null

    - j'utilise une mauvaise syntaxe ?
    ou
    - la cause mère n'est pas accessible ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Et si tu fais cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
         Operateur op = null;
         op.getCode();
    } catch (Throwable t) {
         request.getSession().setAttribute("javax.servlet.jsp.jspException", t);
         response.sendRedirect("/erreur.jsp");
    }

  9. #9
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Si je met tout mon code dans un bloc try/catch, je ne vois pas vraiment l'intérêt.

    Mon but est de faire une page perso qui m'affiche les exceptions qui ont eu lieu et qui ont oublié d'être gérés dans mon code. Cela peut toujours arriver. Je ne prétends avec un code parfait sans erreur.

    Le fait d'utiliser un bloc try/catch et de mettre la trace de l'erreur en session sous-entend qu'on a intercepté l'erreur. Ce n'est donc pas dans le même contexte.

    Il se peut aussi que j'ai mal interprété ta réponse, n'hésite pas à me rectiifier.

    Pour rapeller le problème :

    Je veux la même page d'erreur que TomCat mais perso.
    Contraintes :
    - afficher le code de l'erreur
    - afficher l'exception
    - afficher la cause mère de l'exception
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  10. #10
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par Pietra
    Je suppose que c'est Struts qui encapsule l'exception.
    Oui je croi que tu avais raison depuis le début c'est STruts qui fout le bazarre. Les excpetions mères sont détruites par Struts, pas moyen d'y accéder.
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

Discussions similaires

  1. [VB.Net] afficher un fichier pdf dans une page WEB
    Par kasaw dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/08/2008, 16h02
  2. Afficher un flux PDF dans une page HTML
    Par dachu dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/04/2008, 11h55
  3. [JSP]Comment afficher l'heure actuel dans une page JSP?
    Par adil_vpb dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 19/02/2007, 15h32
  4. comment afficher de l'OpenGL dans une page web ?
    Par arakiri dans le forum OpenGL
    Réponses: 4
    Dernier message: 25/12/2006, 12h30
  5. afficher un fichier ppt dans une page web
    Par aymenroma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/07/2006, 19h29

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