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

JSF Java Discussion :

Logging des erreurs inattendues


Sujet :

JSF Java

  1. #1
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut Logging des erreurs inattendues
    Bonjour

    Dans une application JSF sur Glassfish, pour enregistrer les erreurs inattendues, j'ai utilisé un vieux truc tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OutputStream stream ...
    // sachant que stream va écrire dans un fichier texte
     
    System.setErr(new PrintStream(stream));
    ça marche impec et j'ai bien toutes les erreurs non gérées dans mon fichier texte.

    Le problème :
    Si j'ai plusieurs applications dans GlassFish (war), alors les erreurs des différentes applications se retrouvent mélangées dans un seul fichier texte.
    A l'évidence, System.setErr s'applique à toutes les applications déployées sur le serveur.
    J'aurai voulu avoir un fichier d'erreur par application

    Du coup j'ai essayé avec java.util.logging.Logger et Log4j mais ils ne semblent pas gérer les erreurs inattendues (ou alors j'ai pas trouvé)

    Quelqu'un a-t-il une idée ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Dans la mesure où toutes les requêtes JSF passent par la servlet FacesServlet, il devrait être possible de surcharger la méthode service pour mettre un logger dans le cas d'une erreur imprévue.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    surcharger la méthode service pour mettre un logger dans le cas d'une erreur imprévue.
    Au-dessus de mes compétences ; j'ignorai l'existence de cette classe.

    Pour surcharger la méthode, je suppose qu'il faudrait créer une classe qui hérite de FacesServlet mais j'ai cru voir dans la doc que c'est une classe "final".
    Il faudra aussi modifier le web.xml et indiquer la nouvelle classe ?
    J'ai l'impression que je suis complètement à côté.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Effectivement, la classe est marquée "final", donc on ne peut en pas hériter.

    Ceci dit, on peut facilement contourner le problème en faisant une servlet héritant de HttpServlet et possédant une propriété de type FacesServlet.
    Ensuite, on définit toutes les méthodes publiques de FacesServlet dans notre servlet frontale et on redirige vers les méthodes de FacesServlet.

    Pour l'activation, tout se passe dans le fichier web.xml, il suffit de faire référence à la nouvelle servlet en remplacement de javax.faces.FacesServlet.

    J'ai fait le test, ça fonctionne... mais ce n'est pas vraiment intéressant. Pour arriver dans le traitement d'une exception au niveau de la méthode service, il faut faut vraiment y aller !
    Et on a déjà pollué les logs avec des stackTrace.
    Il y a certainement un point plus approprié pour faire des traces propres, je vais "éplucher" le cycle pour voir ce qu'on peut faire
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Merci à toi pour cette recherche.
    Si c'est trop galère, n'insiste pas ; je vais logger déjà tout ce que je peux comme erreur
    et je ferai un log général avec System.setErr que j'examinerai régulièrement pour arriver à éliminer un max d'erreurs imprévues
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    J'ai trouvé plusieurs possibilités mais à priori, la plus simple dans ton cas serait de passer par une "custom" ExceptionHandlerFactory.
    En gros, on a :
    1- une classe CustomExceptionHandlerFactory étendant ExceptionHandlerFactory et faisant référence à CustomExceptionHandler
    2- une classe CustomExceptionHandler étendant ExceptionHandlerWrapper qui fait la log "propre".

    (on suppose que ces classes sont dans un package com.olivier.jsf.factory)

    CustomExceptionHandlerFactory
    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
    public class CustomExceptionHandlerFactory extends ExceptionHandlerFactory
    {
        private ExceptionHandlerFactory exceptionHandlerFactory;
     
        public CustomExceptionHandlerFactory()
        {
        }
     
        public CustomExceptionHandlerFactory(ExceptionHandlerFactory exceptionHandlerFactory)
        {
            this.exceptionHandlerFactory = exceptionHandlerFactory;
        }
     
        @Override
        public ExceptionHandler getExceptionHandler()
        {
            ExceptionHandler handler = new CustomExceptionHandler(exceptionHandlerFactory.getExceptionHandler());
            return handler;
        }
    }
    CustomExceptionHandler
    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
    public class CustomExceptionHandler extends ExceptionHandlerWrapper
    {
        private static final Logger logger = Logger.getLogger(CustomExceptionHandler.class.getName());
        private ExceptionHandler exceptionHandler;
     
        public CustomExceptionHandler(ExceptionHandler exceptionHandler)
        {
            this.exceptionHandler = exceptionHandler;
        }
     
        @Override
        public ExceptionHandler getWrapped()
        {
            return exceptionHandler;
        }
     
        @Override
        public void handle() throws FacesException
        {
            final Iterator<ExceptionQueuedEvent> queue = getUnhandledExceptionQueuedEvents().iterator();
            while (queue.hasNext())
            {
                // take exceptions one by one
                ExceptionQueuedEvent item = queue.next();
                ExceptionQueuedEventContext exceptionQueuedEventContext = (ExceptionQueuedEventContext) item.getSource();
                try
                {
                    // log error
                    Throwable throwable = exceptionQueuedEventContext.getException();
                    logger.log(Level.SEVERE, "EXCEPTION: " + throwable.toString());
                }
                finally
                {
                    // remove it from queue
                    queue.remove();
                }
            }
            getWrapped().handle();
        }
     
    }
    Mise en oeuvre dans faces-config.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"
        version="2.3">
     
        <factory>
            <exception-handler-factory>com.olivier.jsf.factory.CustomExceptionHandlerFactory</exception-handler-factory>
        </factory>
     
        <application>
    ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Très intéressant. je regarde cela et je fais un retour.
    Merci à toi !
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Formidable OButterlin ! Cela fonctionne très bien.

    J'ai fait deux applications test JSF et les erreurs non gérées sont bien dirigées dans des log séparés. L'objectif est atteint.

    Il y a juste un truc.
    Pour faire le test, j'ai fait une classe TestErreur et je provoque une erreur avec une division par zéro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Named("testErreur")
    @SessionScoped
    public class TestErreur implements Serializable {
     
        public void test() {
            int z = 123 / 0;
        }
    }
    Ce code est appelé depuis la page index.xhtml qui contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:commandButton value="Test erreur" actionListener="#{testErreur.test()}" style="width: 350px"/>
    Dans le log, j'obtiens bien le message d'erreur :
    javax.faces.FacesException: /index.xhtml @11,110 actionListener="#{testErreur.test()}": java.lang.ArithmeticException: / by zero
    Mais il n'indique pas le numéro de ligne. Il indique seulement la méthode à laquelle la page s'adresse (ici testErreur.test()) mais ne va pas plus loin.
    Par ailleurs, si l'erreur se produit dans une méthode d'une autre classe, il ne renvoie pas la stacktrace.

    Du coup, dans une application un peu complexe, on sait juste qu'il y a eu une erreur mais on ne sait pas où exactement (contrairement aux erreurs gérées avec un try/catch où on a le numéro de ligne)

    Aurais-tu une idée pour remonter à la source exacte de l'erreur ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Si tu as repris le code que je t'avais montré au-dessus, c'est normal, il ne traite que l'exception proprement dite.

    Si tu veux toute la pile, il faudrait ajouter l'exception au logger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    logger.log(Level.SEVERE, "EXCEPTION: " + throwable.toString(), throwable);
    ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    En effet, j'ai oublié de mentionné que j'avais listé/examiné la stacktrace du Throwable
    quand je fais j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /index.xhtml @11,110 actionListener="#{testErreur.test()}": java.lang.ArithmeticException: / by zero
    et quand je regarde la stacktrace avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throwable.getStackTrace()
    j'obtiens :
    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
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
    org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
    com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
    org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
    org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
    org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
    org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
    org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
    org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
    java.lang.Thread.run(Thread.java:745)
    Et dans cette liste, je n'ai pas d'indication de la classe/méthode qui a fait planter.
    Je cherche à avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at application.TestErreur.test(TestErreur.java:27)
    je fais les tests dans NetBeans avec le serveur Glassfish intégré et dans la fenêtre "output" de Netbeans, je vois bien qu'il arrive à voir où l'erreur s'est produite.
    Il me donne d'abord une stacktrace qui est différente de cette de throwable.getStackTrace()
    ensuite il ajoute la stacktrace où s'est vraiment produit l'erreur :
    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
    Caused by: javax.el.ELException: /index.xhtml @11,110 actionListener="#{testErreur.test()}": java.lang.ArithmeticException: / by zero
    	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
    	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
    	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    	... 31 more
    Caused by: java.lang.ArithmeticException: / by zero
    	at application.TestErreur.test(TestErreur.java:27)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    ...
    Je ne dois pas regarder au bon endroit ...
    J'aimerai bien savoir comment il fait pour trouver l'exception de classe javax.el.ELException qui a l'air de lui permettre de remonter à la source.

    Bref je patauge encore.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    J'ai fait le test en ajoutant l'exception au logger dans la classe CustomExceptionHandler et j'obtiens bien les informations
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    08:27:54,502 SEVERE [com.clemessy.dsi.recherches.jsf.factory.CustomExceptionHandler] (default task-2) EXCEPTION: javax.faces.FacesException: /resources/component/showcase-links.xhtml @35,234 actionListener="#{testManager.showDTOContexte()}": java.lang.ArithmeticException: / by zero: javax.faces.FacesException: /resources/component/showcase-links.xhtml @35,234 actionListener="#{testManager.showDTOContexte()}": java.lang.ArithmeticException: / by zero
        at com.sun.jsf-impl@2.3.14.SP01//com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:63)
        at com.sun.jsf-impl@2.3.14.SP01//com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
        at com.sun.jsf-impl@2.3.14.SP01//com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
        at javax.faces.api@3.0.0.SP04//javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707)
        at javax.faces.api@3.0.0.SP04//javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at io.opentracing.contrib.opentracing-jaxrs2//io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:52)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at deployment.Showcase.war//com.clemessy.dsi.jsf.filter.RequestFilter.doFilter(RequestFilter.java:77)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.core@2.2.2.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.core@2.2.2.Final//io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
        at io.undertow.core@2.2.2.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.core@2.2.2.Final//io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
        at io.undertow.core@2.2.2.Final//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
        at io.undertow.core@2.2.2.Final//io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.core@2.2.2.Final//io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.core@2.2.2.Final//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.core@2.2.2.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.core@2.2.2.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
        at io.undertow.core@2.2.2.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at org.wildfly.extension.undertow@21.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
        at io.undertow.servlet@2.2.2.Final//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
        at io.undertow.core@2.2.2.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
        at io.undertow.core@2.2.2.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
        at org.jboss.xnio@3.8.2.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
        at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: javax.el.ELException: /resources/component/showcase-links.xhtml @35,234 actionListener="#{testManager.showDTOContexte()}": java.lang.ArithmeticException: / by zero
        at com.sun.jsf-impl@2.3.14.SP01//com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:71)
        at javax.faces.api@3.0.0.SP04//javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:124)
        at javax.faces.api@3.0.0.SP04//javax.faces.event.ActionEvent.processListener(ActionEvent.java:72)
        at javax.faces.api@3.0.0.SP04//javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:490)
        at javax.faces.api@3.0.0.SP04//javax.faces.component.UICommand.broadcast(UICommand.java:211)
        at javax.faces.api@3.0.0.SP04//javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:847)
        at javax.faces.api@3.0.0.SP04//javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:1012)
        at com.sun.jsf-impl@2.3.14.SP01//com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:55)
        ... 59 more
    Caused by: java.lang.ArithmeticException: / by zero
        at deployment.Showcase.war//com.clemessy.dsi.recherches.test.TestManager.showDTOContexte(TestManager.java:81)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at javax.el.api@2.0.0.Final//javax.el.ELUtil.invokeMethod(ELUtil.java:245)
        at javax.el.api@2.0.0.Final//javax.el.BeanELResolver.invoke(BeanELResolver.java:338)
        at javax.el.api@2.0.0.Final//javax.el.CompositeELResolver.invoke(CompositeELResolver.java:198)
        at org.glassfish.jakarta.el@3.0.3.jbossorg-2//com.sun.el.parser.AstValue.invoke(AstValue.java:257)
        at org.glassfish.jakarta.el@3.0.3.jbossorg-2//com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:237)
        at org.jboss.weld.core@3.1.5.Final//org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
        at org.jboss.weld.core@3.1.5.Final//org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
        at com.sun.jsf-impl@2.3.14.SP01//com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:65)
        ... 66 more
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Log des erreurs PHP via AJAX
    Par Odonnize dans le forum Langage
    Réponses: 0
    Dernier message: 15/03/2013, 15h45
  2. Configurer un fichier de log des erreurs
    Par helpcomm dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2011, 11h24
  3. [WPF] Comment avoir un fichier log des erreurs ?
    Par Flaburgan dans le forum C#
    Réponses: 5
    Dernier message: 29/04/2011, 16h36
  4. Log des erreurs sql
    Par cassy dans le forum Administration
    Réponses: 8
    Dernier message: 06/01/2009, 11h30
  5. Écrire le log des Erreurs via FTP sur UNIX
    Par Alnsam dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 07/03/2007, 16h10

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